2016-07-01 2 views
0

현재 실행 중입니다 : Python 3.5.1 :: Anaconda 4.0.0 (x86_64).UnicodeDecodeError : 'ascii'코덱이 7601 위치의 바이트 0xc3을 디코딩 할 수 없습니다. 서수가 범위 내에 없습니다 (128)

ERROR : UnicodeDecodeError 'ASCII'코덱 (7601)에 위치 바이트 0xc3를 디코딩 할 수있다 : I는 상기 오류 아래 코드를 실행할 때, 범위 (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]) 
+2

파일에 사용 된 인코딩을 확인 했습니까? NOAA가 어딘가에서 지정했다고 확신합니다. 그런 다음 파일을 열 때 해당 인코딩을 사용하십시오. –

+0

또한 처음 10 줄만 필요하면 전체 파일을 먼저 읽지 마십시오. 그것은 큰 파일입니다. 'itertools import islice'에서,'lines = list (islice (openfileobj, 10))'는 열린 파일 객체의 처음 10 줄을 나머지를 읽지 않고 줄 것입니다. –

+0

큰 파일이므로 첫 번째 10 줄만 제대로 인쇄했는지 확인하십시오. –

답변

2

불행하게도, documentation for that directory은 파일에 사용되는 어떤 코덱을 지정하지 않기 때문에 내가 대신 바이너리 모드로 파일을 열어 '범죄'를 발생 바이트를 발견했다.

데이터는 UTF-8로 인코딩됩니다. '잘못된'는 에스파냐 밖으로 철자가 발생 바이트 :

당신이 파일을 절단 할 때이 문제가 표시되지 않는 이유입니다, 호기심 경우, 파일의 63,815번째 라인의
>>> 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' 

. 그 코덱

파일을 엽니 다 :

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

은 (쉽게 환경 환경 차이가있는) 로케일에 따라 기본에 의존하지 마십시오.

+0

완벽하게 작동 했으므로 인코딩 레이어를 추가해야했습니다. –

관련 문제