是否可以通过一个Unicode符号自动替换多字符Unicode符号?

时间:2017-08-08 06:46:58

标签: python unicode nlp

U + 006E(n)和U + 0303(组合波浪号)形成ñ,但代码点U + 00F1形成ñ:

#!/usr/bin/env python

one = u'\xf1'
two = u'\x6e\u0303'
print(u"{} has len={}".format(one, len(one)))
print(u"{} has len={}".format(two, len(two)))

返回(编辑:有趣 - 下面方框的样式在我的浏览器中打破它,显示波形符不在n上方)

ñ has len=1
ñ has len=2

我知道这两者可能有不同的含义,但这种可能性不大。我也知道如何在一个完整的文本中替换单个例子,但我想还有很多不仅仅是代字号。

如何尽可能用单个等效的单个代码点替换所有Unicode组合?

(我的用例:我想在维基百科上做NLP。我希望在Unicode代码点方面有至少140个字符的文本。有上面的例子并不是太糟糕,但如果这样的话,那将是可取的情况并非如此。)

1 个答案:

答案 0 :(得分:1)

我在寻找unicodedata.normalize

>>> import unicodedata
>>> one = u'\xf1'
>>> two = u'\x6e\u0303'
>>> unicodedata.normalize('NFC', one)
u'\xf1'
>>> unicodedata.normalize('NFC', two)
u'\xf1'

谢谢你,@ Richard