2016-09-17 45 views
0

我想用R代替Zero Width No-Break SpacespacePersian text中。 我使用了這樣的代碼,根據this link用R中的'space`代替'零寬度無間斷空間'

testAdrs<-"خيابان‌ مولوي‌نرسيده‌به‌قيام‌" 
testAdrs<-gsub('\xef\xbb\xbf',' ',testAdrs) 

我希望我的testAdrs要像"خيابان‌ مولوي‌ نرسيده‌ به‌ قيام‌",但是 有我的字符串沒有變化。

是什麼問題?

+0

你嘗試過'gsub(「[[:space:]]」,「」,testAdrs)'? – hrbrmstr

+0

@hrbrmstr謝謝。這是行不通的。 –

+1

@CyrusMohammadian感謝您的評論。我希望它是自動的,有人在下面回答。 –

回答

2

當我檢查你的文字'خيابان‌ مولوي‌نرسيده‌به‌قيام‌'我的終端上,我得到:

>>> خيابان\U+200C مولوي\U+200Cنرسيده\U+200Cبه\U+200Cقيام\U+ 

,並轉換所有這些字符在Python Shell詛咒,我得到:

>>> binascii.unhexlify(binascii.hexlify(u"خيابان\U+200C مولوي\U+200C نرسيده\U+200C به\U+200C قيام\U+200C".encode('utf-16'))).decode('utf-16') 
u'\u062e\u064a\u0627\u0628\u0627\u0646\u200c \u0645\u0648\u0644\u0648\u064a\u200c \u0646\u0631\u0633\u064a\u062f\u0647\u200c \u0628\u0647\u200c \u0642\u064a\u0627\u0645\u200c' 

你會看到有在上述程序的輸出中是否爲\ufeff(「零寬度不間斷空間」)。另一個證明是here你會看到ǎ很容易被匹配,但是不存在\x{feff}

因此,你的問題是你的字符串中沒有「零寬度無間斷空間」。我想你想替換的空間可能是this one\u200C(「零寬度非連接器」)。

+1

Thanks @fronthem我使用了'testAdrs <-gsub('\ u {200c}','',testAdrs)'並且它工作正常。 –