2024-09-29 17:15:27 发布
网友
我有代码:
encoding = guess_encoding() text = unicode(text, encoding)
当文本中出现错误符号时,将引发UnicodeDecode异常。我怎样才能自动跳过用“?”替换错误符号的异常?在
在Python3中,可以使用decode方法将bytes对象解码为字符串。它可以接受两个参数: -encoding,默认为"utf-8",并且 -errors,它定义对非法字符序列的操作。默认值是"strict",它引发了一个UnicodeDecodeError;其他可选值是ignore和{},后者用Unicode替换字符"\uFFFD"替换非法字符。在
decode
bytes
encoding
"utf-8"
errors
"strict"
UnicodeDecodeError
ignore
"\uFFFD"
因此,您需要执行以下操作来解码和替换:
encoding = guess_encoding() text = text_bytes.decode(encoding, errors='replace').replace('\uFFFD', '?')
正如Sven Marnach在注释中指出的那样,您可以将errors参数直接提供给open;否则您将在读取文件时得到解码错误(如果它不在字符映射中)。在
open
试试看
text = unicode(text, encoding, "replace")
从documentation:
'replace' causes the official Unicode replacement character, U+FFFD, to be used to replace input characters which cannot be decoded.
如果要使用"?"而不是官方的Unicode替换字符,可以这样做
"?"
转换为unicode后。在
在Python3中,可以使用},后者用Unicode替换字符
decode
方法将bytes
对象解码为字符串。它可以接受两个参数: -encoding
,默认为"utf-8"
,并且 -errors
,它定义对非法字符序列的操作。默认值是"strict"
,它引发了一个UnicodeDecodeError
;其他可选值是ignore
和{"\uFFFD"
替换非法字符。在因此,您需要执行以下操作来解码和替换:
正如Sven Marnach在注释中指出的那样,您可以将
errors
参数直接提供给open
;否则您将在读取文件时得到解码错误(如果它不在字符映射中)。在试试看
从documentation:
如果要使用
^{pr2}$"?"
而不是官方的Unicode替换字符,可以这样做转换为unicode后。在
相关问题 更多 >
编程相关推荐