bcl*_*man 0 python csv character-encoding python-2.x
我正在解析CSV如下:
with open(args.csv, 'rU') as csvfile:
try:
reader = csv.DictReader(csvfile, dialect=csv.QUOTE_NONE)
for row in reader:
...
Run Code Online (Sandbox Code Playgroud)
args.csv我的文件名称在哪里.我文件中的一行是一个顶部有两个点的e.遇到这个时我的脚本会中断.
我得到以下堆栈跟踪:
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 244, in dumps
return _default_encoder.encode(obj)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
Run Code Online (Sandbox Code Playgroud)
并出现以下错误:
UnicodeDecodeError: 'utf8' codec can't decode byte 0x91 in position 5: invalid start byte
Run Code Online (Sandbox Code Playgroud)
FWIW,我正在运行Python 2.7并且升级不是一个选项(出于几个原因).
我很失落如何解决这个问题所以非常感谢任何帮助.
谢谢!
字节0x91是Windows-1252编码中的"智能"开头单引号.所以听起来这就是你的文件使用的编码,而不是UTF-8.所以,使用open(args.csv, 'rU', encoding='windows-1252').
| 归档时间: |
|
| 查看次数: |
2612 次 |
| 最近记录: |