簡體   English   中英

如何刪除R中的特定特殊字符

[英]How to remove specific special characters in R

我有一些像這樣的句子。

c = "In Acid-base reaction (page[4]), why does it create water and not H+?" 

我想刪除除'?&+ - /之外的所有特殊字符

我知道如果我想刪除所有特殊字符,我可以簡單地使用

gsub("[[:punct:]]", "", c)
"In Acidbase reaction page4 why does it create water and not H"

但是,一些特殊字符如+ - ? 也被刪除,我打算保留。

我試圖創建一個特殊字符串,我可以在這樣的代碼中使用

gsub("[special_string]", "", c)

我能做的最好的就是想出這個

cat("!\"#$%()*,.:;<=>@[\\]^_`{|}~.")

但是,以下代碼不起作用

gsub("[cat("!\"#$%()*,.:;<=>@[\\]^_`{|}~.")]", "", c)

我應該怎么做才能刪除特殊字符,除了一些我要保留的字符?

謝謝

gsub("[^[:alnum:][:blank:]+?&/\\-]", "", c)
# [1] "In Acid-base reaction page4 why does it create water and not H+?"

我認為你正在使用正則表達式解決方案。 我會給你一個凌亂的解決方案和一個包添加解決方案(無恥的自我推銷)。

可能有更好的正則表達式:

x <- "In Acid-base reaction (page[4]), why does it create water and not H+?" 
keeps <- c("+", "-", "?")

## Regex solution
gsub(paste0(".*?($|'|", paste(paste0("\\", 
    keeps), collapse = "|"), "|[^[:punct:]]).*?"), "\\1", x)

#qdap: addon package solution
library(qdap)
strip(x, keeps, lower = FALSE)

## [1] "In Acid-base reaction page why does it create water and not H+?"

為了讓你的方法工作,你需要在領先的“[”之后立即放置文字“]”

 gsub("[][!#$%()*,.:;<=>@^_`|~.{}]", "", c)
[1] "In Acid-base reaction page4 why does it create water and not H+?"

你可以把內部的“[”放在任何地方。 如果您需要排除減號,則需要最后一次。 列出所有這些特殊的預定義字符類后,請參閱?regex頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM