私は次のコードを持っている: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
'import string;実際のコードで 'not_letters_or_digits'をハードコーディングする代わりに' string.punctuation'を使用します。私はここであなたがむしろ明白になるだろう。 –