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个字符的文本。有上面的例子并不是太糟糕,但如果这样的话,那将是可取的情况并非如此。)
答案 0 :(得分:1)
>>> import unicodedata
>>> one = u'\xf1'
>>> two = u'\x6e\u0303'
>>> unicodedata.normalize('NFC', one)
u'\xf1'
>>> unicodedata.normalize('NFC', two)
u'\xf1'
谢谢你,@ Richard!