在将大量文本写入文件或标准输出时,这会让我发疯。我经常收到关于坏字符的错误消息。这是一个简化的测试用例:
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'
是否有一堆类似的字符也需要过滤。)
答案 0 :(得分:0)
使用codecs.StreamWriter
错误处理程序围绕sys.stdout
创建backslashreplace
,并将其作为file
的{{1}}参数传递。