【发布时间】:2016-11-04 05:48:57
【问题描述】:
我目前正在运行:Python 3.5.1 :: Anaconda 4.0.0 (x86_64)。
错误:UnicodeDecodeError:“ascii”编解码器无法解码位置 7601 中的字节 0xc3:序数不在范围内 (128)
运行以下代码时,出现上述错误。当我保存并尝试从本地直接打开 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])
【问题讨论】:
-
您是否检查了文件使用的编码?我确信 NOAA 在某处指定了这一点。然后在打开文件时使用该编码。
-
另外,如果只需要前10行,不要先读整个文件;这是一个大文件。
from itertools import islice,然后lines = list(islice(openfileobj, 10))会为您提供打开文件对象的前 10 行,而无需读取其余部分。 -
只打印前 10 行以查看它是否正常工作,因为它是一个大文件。
-
我很好奇为什么如果我删除文件的大部分代码将运行(即如果我删除所有 txt 文件到 50 行然后打印前 10 行它会工作,但不是当文件已满时)——某些行的编码是否可能与 txt 中的其他行不同?
-
在 ipython 中一切正常,但是,当我尝试在 sublime 文本中运行时,效果不一样
标签: python python-3.5 python-unicode urldecode