这个问题对我来说很常见。很常见,似乎我错过了一些东西(即,必须有更好的方法)。 SO上有多个专门针对此问题的帖子,但它们似乎是解决方法,而不是实际的解决方案。所以,我有一个CSV阅读:
df = pd.read_csv(filename.csv)
我收到以下错误
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 9: invalid continuation byte
解决方案使用cchardet
或chardet
(cchardet
要快得多):
import cchardet as chardet
with open(filename.csv, 'rb') as f:
result = chardet.detect(f.read())
df = pd.read_csv(filename.csv, encoding=result['encoding'])
这可行,但似乎不是一个长期解决方案,因为即使cchardet
也无法保证找到正确的编码。 pd.read_csv
中是否有猜测编码的选项?我宁愿在几个字符上失败,然后无法读取整个文件。关于频率,几乎每次我用CSV读取时都会出现这个问题,这会让pandas
感觉有点脆弱。告诉我,我错过了什么。