您可以使用string.printable过滤字符串中所有不可打印的字符,如下所示:
>>> s = "some\x00string. with\x15 funny characters"
>>> import string
>>> printable = set(string.printable)
>>> filter(lambda x: x in printable, s)
'somestring. with funny characters'
我机器上的string.printable包含:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c
编辑:在Python 3上,筛选器将返回可迭代。返回字符串的正确方法是:
''.join(filter(lambda x: x in printable, s))