我目前正在运行: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])
答案 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')
不要依赖默认值,这取决于您的语言环境(环境因环境而异)。