Python 3.x:确保字符串已准备好进行打印

时间:2014-01-26 20:22:26

标签: python encoding

在将大量文本写入文件或标准输出时,这会让我发疯。我经常收到关于坏字符的错误消息。这是一个简化的测试用例:

Python 3.4.0b2 (v3.4.0b2:ba32913eb13e, Jan  5 2014, 16:13:26) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x='\x92'
>>> print(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python34\Lib\encodings\cp437.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\x92' in position 0: character maps to <undefined>

我有一大块文字。我想打印它或保存到文件,但没有得到这个错误。可能吗?我首选的解决方案是将这个烦人的角色(还有更多?)保存到文件中,但如果有一个很好的方法来过滤它,那也会很好(我知道如何过滤单个角色,但我不知道知道'\x92'是否有一堆类似的字符也需要过滤。)

1 个答案:

答案 0 :(得分:0)

使用codecs.StreamWriter错误处理程序围绕sys.stdout创建backslashreplace,并将其作为file的{​​{1}}参数传递。