【发布时间】:2016-03-31 08:17:43
【问题描述】:
我正在尝试获取外语文本并输出人类可读的、文件名安全的等价物。环顾四周,似乎最好的选择是unicodedata.normalize(),但我无法让它工作。我已经尝试在这里和其他地方放置一些答案的确切代码,但它一直给我这个错误。我跑的时候只成功了一次:
unicodedata.normalize('NFD', '\u00C7')
'C\u0327'
但每隔一段时间,我都会收到错误消息。这是我尝试过的代码:
unicodedata.normalize('NFKD', u'\u2460') #error, not sure why. Look same as above.
s = 'ذهب الرجل'
unicodedata.normalize('NKFC',s) #error
unicodedata.normalize('NKFD', 'ñ') #error
具体来说,我得到的错误是:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid normalization form
我不明白为什么这不起作用。所有这些都是字符串,这意味着它们在 Python 3 中是 unicode。我尝试使用.encode() 对它们进行编码,但后来normalize() 说它只需要字符串的参数,所以我知道这不可能。我很茫然,因为即使我从这里复制的代码似乎也会出错。这是怎么回事?
【问题讨论】:
标签: python python-3.x unicode