用R中的“space”替换“零宽度不间断空间”

时间:2016-09-17 11:41:07

标签: regex r text-mining

我想使用Zero Width No-Break Spacespace中将Persian text替换为R。 我根据this link使用了这样的代码。

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

但我希望testAdrs"خيابان‌ مولوي‌ نرسيده‌ به‌ قيام‌"相似 我的字符串没有变化。

问题是什么?

1 个答案:

答案 0 :(得分:2)

当我在终端上检查你的文字'خيابان‌ مولوي‌نرسيده‌به‌قيام‌'时,我得到了:

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

并将所有这些字符转换为python shell中的hex,我得到了:

>>> 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(“ZERO WIDTH NO-BREAK SPACE”)。另一个证据是here您会看到ǎ很容易匹配,但\x{feff}不存在。

因此,你的问题在于你的字符串中没有“ZERO WIDTH NO-BREAK SPACE”。我想你要替换的空间可能是this one \u200C(“ZERO WIDTH NON-JOINER”)。