我有以下代碼:如何獲得str.translate以使用Unicode字符串?
import string
def translate_non_alphanumerics(to_translate, translate_to='_'):
not_letters_or_digits = u'!"#%\'()*+,-./:;<=>[email protected][\]^_`{|}~'
translate_table = string.maketrans(not_letters_or_digits,
translate_to
*len(not_letters_or_digits))
return to_translate.translate(translate_table)
這對於非Unicode字符串的偉大工程:
>>> translate_non_alphanumerics('<foo>!')
'_foo__'
,但未能爲Unicode字符串:
>>> translate_non_alphanumerics(u'<foo>!')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in translate_non_alphanumerics
TypeError: character mapping must return integer, None or unicode
我不能做任何對str.translate()方法的Python 2.6.2 docs中的「Unicode對象」的段落感。
如何使Unicode字符串工作?
這是一個[使用'unicode.translate()'方法](http://stackoverflow.com/a/11066687/4279)從字符串中刪除Unicode標點符號的示例。 – jfs 2013-12-21 03:24:23
更好用'import string; string.punctuation'而不是在實際代碼中硬編碼'not_letters_or_digits'。在這裏我明白你的意思。 – 2016-02-29 11:48:48