は、バイト文字列またはUnicode文字列のいずれかのためにmaketrans
は必要ありません。
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> delete_chars=''.join(chr(i) for i in xrange(32))
>>> '\x00abc\x01def\x1fg'.translate(None,delete_chars)
'abcdefg'
か:Pythonの3の
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> delete_chars = dict.fromkeys(range(32))
>>> u'\x00abc\x01def\x1fg'.translate(delete_chars)
u'abcdefg'
かさえ:
Python 3.1.3 (r313:86834, Nov 27 2010, 18:30:53) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> delete_chars = dict.fromkeys(range(32))
>>> '\x00abc\x01def\x1fg'.translate(delete_chars)
'abcdefg'
詳細についてはhelp(str.translate)
とhelp(unicode.translate)
(Python2)を参照してください。
2番目の例のようなものを試している人には、エラー 'TypeError:expected character buffer object'を受け取った場合、翻訳しようとしている文字列がユニコードではない可能性があります。 (間違いなくこれはMarkにとっては明らかですが、私のような奴隷には当てはまりません)。 – LarsH