Pandas读取txt文件遇UnicodeDecodeError,如何生成目标DataFrame?
解决方法
1. 解决编码错误
报错里的UnicodeDecodeError是因为文件并非UTF-8编码,开头的0xff字节说明文件大概率是UTF-16编码(带BOM),读取时必须指定对应编码才能正常解析。
2. 优化读取逻辑
不用手动去除双引号,pandas.read_csv默认会识别双引号作为字段的引用符号,自动解析并去除。另外目标DataFrame里的Email是小写格式,需要对Email列做转小写处理。
最终可用代码
import pandas as pd # 指定编码读取,同时转换Email为小写 users = pd.read_csv('file.txt', encoding='utf-16', converters={'Email': lambda x: x.lower()}) # 输出结果 print(users)
验证结果
执行后会得到和目标一致的DataFrame:
Name Email Active IsGroup 0 David david@gmail.com 1 1 1 John john@gmail.com 0 1 2 Steff steff@gmail.com 1 0
如果指定utf-16仍报错,可以尝试encoding='utf-8-sig'(适用于带BOM的UTF-8文件),根据实际文件编码调整即可。
内容的提问来源于stack exchange,提问作者noonenine
相关产品推荐
相关产品推荐

