读取 Python 中的点文件
Read Dot Files in Python
我正在尝试读取包含以下内容的点文件:
graph {
KZJLCHYE -- DJTGWUZZ;
PNLWKOXF -- BFSIOMPY;
...
}
但是当我尝试读取点文件时,我得到 "UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte"。有没有办法只使用标准库读取 Python 中的点文件的内容?
要忽略文件中的 unicode 字符,您可以这样做
var = unicode(var, errors='ignore')
文本文件的编码是一个永远无法完全解决的模糊主题。您要么需要猜测编码,要么手上有损坏的(或二进制)文件:
要猜测编码,请尝试在任何高级文本编辑器中打开它,看看它是否为您猜测编码and/or突出显示有问题的字符。
如果你不关心pos 0的坏字符,你可以指示python忽略它。请参阅 Python3 手册:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
-- 只需设置 errors='ignore'
Python3 比 python2 更好地处理编码,因此如果您提到您使用的是哪个版本,将会有所帮助。
将文件作为二进制流读取并在将其转换为 str
时处理错误字符:open(file, 'rb')
。同样,您的解码选项取决于 python 版本,因此我无法进一步说明。
我正在尝试读取包含以下内容的点文件:
graph {
KZJLCHYE -- DJTGWUZZ;
PNLWKOXF -- BFSIOMPY;
...
}
但是当我尝试读取点文件时,我得到 "UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte"。有没有办法只使用标准库读取 Python 中的点文件的内容?
要忽略文件中的 unicode 字符,您可以这样做
var = unicode(var, errors='ignore')
文本文件的编码是一个永远无法完全解决的模糊主题。您要么需要猜测编码,要么手上有损坏的(或二进制)文件:
要猜测编码,请尝试在任何高级文本编辑器中打开它,看看它是否为您猜测编码and/or突出显示有问题的字符。
如果你不关心pos 0的坏字符,你可以指示python忽略它。请参阅 Python3 手册:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
-- 只需设置errors='ignore'
Python3 比 python2 更好地处理编码,因此如果您提到您使用的是哪个版本,将会有所帮助。将文件作为二进制流读取并在将其转换为
str
时处理错误字符:open(file, 'rb')
。同样,您的解码选项取决于 python 版本,因此我无法进一步说明。