2016-02-25 169 views
4

我想刪除我的字符串中的一些非常特殊的字符。 我讀過的其他職位,如:R如何刪除字符串中的特殊字符?

  1. Remove all special characters from a string in R?
  2. How to remove special characters from a string?

但這些都不是什麼即時尋找。

可以說,我的字符串是如下:

s = "who are í ½í¸€ bringing?" 

我已經試過以下:

test = tm_map(s, function(x) iconv(enc2utf8(x), sub = "byte")) 
test = iconv(s, 'UTF-8', 'ASCII') 

上面這些都不奏效。

編輯: 我正在尋找一個通用解決方案! 我不能(也不願意)手動識別所有特殊字符。

也是這些非常特殊字符(不是100%確定),從表情

請幫助或引導我正確的帖子引起。 謝謝!

+1

我認爲真正的問題是,你是如何與亂碼字符串?如果您向後退到您生成此字符串的方式,您可以調整該步驟以獲取所需的輸出。 –

+1

所以,我只是用gsub嘗試過,它似乎工作。像這樣:'s2 < - gsub(「€」,「」,s)'。試着這樣做。基本上將「s」字符串中的「€」實例更改爲無效,從而有效地將其刪除。 – giraffehere

+0

@RichardScriven我不是很確定,但可能來自表情 – alwaysaskingquestions

回答

4

所以,我要繼續前進,使一個答案,因爲我相信這是你在找什麼:

> s = "who are í ½í¸€ bringing?" 
> rmSpec <- "í|½|€" # The "|" designates a logical OR in regular expressions. 
> s.rem <- gsub(rmSpec, "", s) # gsub replace any matches in remSpec and replace them with "". 
> s.rem 
[1] "who are ¸ bringing?" 

現在,這確實有,你必須手動定義警告rmSpec變量中的特殊字符。不知道您是否知道要刪除哪些特殊字符,或者您是否需要更通用的解決方案。

編輯:

所以看起來你幾乎iconv有了它,你只是缺少sub說法。見下:

> s 
[1] "who are í ½í¸€ bringing?" 
> s2 <- iconv(s, "UTF-8", "ASCII", sub = "") 
> s2 
[1] "who are bringing?" 
+0

亞......即時通訊尋找更一般的解決方案。手動識別所有特殊字符在我的情況下幾乎是不可能的(因爲我有一個非常大的數據集,我不希望通過它們一個接一個地找出我有哪些/哪些特殊字符) – alwaysaskingquestions

+0

@alwaysaskingquestions請參閱我在我的編輯回答。 'iconv'中有一個額外的參數,你錯過了。 – giraffehere

+1

您也可以指定一組要替換的字符,例如'gsub(「[í€]),」「,s)',這比使用'|'多次更簡單 – thelatemail