Đối với trường hợp này, không có nhu cầu maketrans
cho một trong hai chuỗi byte hoặc các chuỗi Unicode:
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'
hay:
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'
hoặc thậm chí bằng Python 3:
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'
Xem help(str.translate)
và help(unicode.translate)
(bằng Python2) để biết chi tiết.
Nguồn
2011-01-31 03:14:59
Đối với những người có thể thử thứ gì đó giống như ví dụ thứ hai ... nếu bạn gặp lỗi 'TypeError: dự kiến một đối tượng đệm ký tự', điều đó có nghĩa là chuỗi bạn đang cố dịch không phải là unicode. (Không nghi ngờ điều này là hiển nhiên đối với Mark, nhưng không noobs như tôi.) – LarsH