UnicodeDecodeError:' ascii'编解码器无法解码位置7601中的字节0xc3:序数不在范围内(128)

时间:2016-07-01 18:23:02

标签: python python-3.5 python-unicode urldecode

我目前正在运行:Python 3.5.1 :: Anaconda 4.0.0(x86_64)。

错误:UnicodeDecodeError:' ascii'编解码器不能解码位置7601中的字节0xc3:序数不在范围内(128)

运行以下代码时出现上述错误。当我保存并尝试从本地directy打开txt文件时,我遇到了同样的错误,但是,当我保存并运行一个副本时,我按照预期缩短到~25行 - 任何指导都会非常感激

import numpy as np
import matplotlib.pyplot as pp
import seaborn
import urllib.request


urllib.request.urlretrieve('ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/ghcnd-stations.txt','stations.txt')

print(open('stations.txt','r').readlines()[:10])

1 个答案:

答案 0 :(得分:2)

不幸的是,documentation for that directory没有指定用于文件的编解码器,所以我以二进制模式打开文件,找到导致'进攻'的字节。

数据编码为UTF-8;你遇到的'冒犯'字节拼写出ESPAñOLA:

>>> line
b'US1NMRA0022  36.0456 -106.1517 1955.0 NM ESPA\xc3\xb1OLA 5.4 WNW                           \n'
>>> line.decode('utf8')
'US1NMRA0022  36.0456 -106.1517 1955.0 NM ESPAñOLA 5.4 WNW                           \n'

这是文件中的第63815行,如果您很好奇,这就是为什么在截断文件时没有看到这个问题的原因。

使用该编解码器打开文件:

open('stations.txt', 'r', encoding='utf8')

不要依赖默认值,这取决于您的语言环境(环境因环境而异)。

相关问题