Mac OS 10.13下Python读取.tsv遇编码错误及.tsv.7z读取问题求助
解决TSV文件读取的UnicodeDecodeError与7Z压缩文件读取问题
一、解决UnicodeDecodeError错误
从报错信息看,你的TSV文件里包含0xbc这个字节,它不属于UTF-8编码的有效字节,所以指定encoding='utf-8'会解码失败。这里有几个可行的解决方案:
尝试兼容编码临时读取:比如使用
latin-1编码,它能映射所有字节不会报错,之后你可以再根据需要转换编码:train = pd.read_csv('/Users/sherrymukim/Documents/mercari/train.tsv', sep='\t', encoding='latin-1')另外也可以试试
cp1252编码,这是Windows系统常用的编码,很多非UTF-8的文本文件会用它。自动检测文件编码:用
chardet库来检测文件的真实编码,这样能精准指定编码:
先安装chardet(如果没装的话):pip install chardet然后运行以下代码检测并读取:
import chardet import pandas as pd with open('/Users/sherrymukim/Documents/mercari/train.tsv', 'rb') as f: encoding_result = chardet.detect(f.read()) # 使用检测到的编码读取文件 train = pd.read_csv('/Users/sherrymukim/Documents/mercari/train.tsv', sep='\t', encoding=encoding_result['encoding'])
二、读取.tsv.7z格式文件
Pandas本身不支持直接读取7Z压缩格式的文件,你可以通过以下两种方式解决:
手动解压后读取:
在Mac上,你可以直接双击.7z文件用系统自带的归档工具解压;如果系统没有自带支持,也可以通过Homebrew安装p7zip工具:brew install p7zip然后在终端执行解压命令:
7z x /Users/sherrymukim/Documents/mercari/train.tsv.7z解压后就可以用之前的方法读取TSV文件了。
用Python库直接读取压缩文件:
使用py7zr库可以在Python中直接读取7Z压缩包内的文件,无需手动解压:
先安装py7zr:pip install py7zr然后用以下代码读取:
import py7zr import pandas as pd with py7zr.SevenZipFile('/Users/sherrymukim/Documents/mercari/train.tsv.7z', mode='r') as zip_file: # 打开压缩包内的TSV文件 with zip_file.open('train.tsv') as tsv_file: # 这里记得替换为你之前找到的正确编码 train = pd.read_csv(tsv_file, sep='\t', encoding='latin-1')
内容的提问来源于stack exchange,提问作者SM_
相关产品推荐
相关产品推荐

