开发者

Maketrans in Python 2.6

开发者 https://www.devze.com 2023-02-08 02:41 出处:网络
I have got this nice little method to remove control characters from a string. Unfortunatelly, it does not work in Python 2.6 (only in Python 3.1). It states:

I have got this nice little method to remove control characters from a string. Unfortunatelly, it does not work in Python 2.6 (only in Python 3.1). It states:

mpa = str.maketrans(dict.fromkeys(control_chars))

AttributeError: type object 'str' has开发者_开发问答 no attribute 'maketrans'

def removeControlCharacters(line):
   control_chars = (chr(i) for i in range(32))
   mpa = str.maketrans(dict.fromkeys(control_chars))
   return line.translate(mpa)

How can it be rewritten?


In Python 2.6, maketrans is in the string module. Same with Python 2.7.

So instead of str.maketrans, you'd first import string and then use string.maketrans.


For this instance, there is no need for maketrans for either byte strings or Unicode strings:

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'

or:

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'

or even in 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'

See help(str.translate) and help(unicode.translate) (in Python2) for details.

0

精彩评论

暂无评论...
验证码 换一张
取 消