Mac系统下用Pandas打开含日文CSV时遇UTF-8解码错误求助
解决Mac上Pandas读取日文CSV的UTF-8解码错误
嘿,我完全懂你遇到的麻烦!用utf8编码读带日文的CSV时报'utf-8' codec can't decode byte 0x96 in position 0,本质是这个CSV文件实际编码根本不是UTF-8——日文文件常用的编码是Shift-JIS、EUC-JP这类,和Windows/Mac平台无关,只是之前你找的方案没针对性提Mac上的检测方法而已。
给你几个一步步的解决办法,从简单到精准:
1. 先试日文常用编码
直接替换编码参数,先从最常见的Shift-JIS开始:
foo = pd.read_csv("filename.csv", encoding='shift_jis')
如果不行,再试EUC-JP:
foo = pd.read_csv("filename.csv", encoding='euc_jp')
这两个编码覆盖了绝大多数日文CSV的情况。
2. 用Mac终端精准检测编码
如果上面的方法都不行,直接用Mac自带的file命令查文件真实编码:
打开终端,输入:
file -I filename.csv
执行后会输出类似这样的结果:
filename.csv: text/plain; charset=shift_jis
把charset=后面的编码值直接填到pandas的encoding参数里就行,绝对精准。
3. 用工具自动检测编码(终极方案)
要是终端命令也搞不定,就用chardet库自动识别编码:
首先安装库:
pip install chardet
然后运行这段代码检测并读取:
import chardet import pandas as pd # 检测文件编码 with open("filename.csv", 'rb') as f: detect_result = chardet.detect(f.read()) # 用检测到的编码读取 foo = pd.read_csv("filename.csv", encoding=detect_result['encoding'])
这个库会分析文件字节给出最可能的编码,几乎不会出错。
内容的提问来源于stack exchange,提问作者user_seaweed
相关产品推荐
相关产品推荐

