2014-07-11 2 views
0

numpy.loadtxt로 데이터를로드하려고합니다 ... 읽으려는 파일이 cp1252 코딩을 사용하고 있습니다. numpy로 인코딩을 cp1252로 변경할 수 있습니까? Numpy loadtxt 인코딩

다음

import numpy as np 
n = 10 
myfile = '/path/to/myfile' 
mydata = np.loadtxt(myfile, skiprows = n) 

준다 :

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 189: invalid start byte 

파일은 플로트의 테이블에 따라 메타 데이터 (제 1 행 N)을 포함한다.

편집 :이 문제는 우분투 (12.04)에서이 문제가 발생하는 경우에만 발생합니다. Windows에서는 잘 작동합니다. 이런 이유로 나는이 문제가 인코딩과 관련이 있다고 생각한다.

Edit2가 : 너무 잘 다음 작품에 나오는 것처럼 파일을 여는 : 내가 직접 NumPy와 배열에 데이터를 읽을 np.loadtext 사용하고 싶습니다 그러나

import codecs 
data = codecs.open(myfile, encoding='cp1252') 
datalines = data.readlines() 

.

+0

cp1252의'ox6f'가'ö'인데, 입력 내용은 어떻게 생겼습니까? –

+0

'numpy 1.8.1'을 사용하고'n'은 정확합니다. 그것은 작동합니다. – emeth

답변

0

나는 혼자서 문제를 해결할 수 있었다.

난 그냥 NumPy와 함께 읽기 전에 해당 파일을 열어했다 :

import numpy as np 
import codecs 

n=10 

filecp = codecs.open(myfile, encoding = 'cp1252') 
mydata = np.loadtxt(filecp, skiprows = n) 

당신에게 모두 감사합니다!

+0

컨텍스트 관리자 ('with')를 사용하지 않는 한 파일 디스크립터 유출로 이어질 수 있습니다. –

관련 문제