2017-09-05 2 views
4

Windows에서이 notebook을 Python 3.5.3으로 구현 중이며 load_vectors() 요구. 게시 된 다른 솔루션을 시도했지만 아무도 작동하지 않습니다.Python 3 UnicodeDecodeError : 'ascii'코덱이 0 바이트 위치 0xe2를 디코딩 할 수 없습니다. 서수 범위가 128이 아닙니다.

<ipython-input-86-dd4c123b0494> in load_vectors(loc) 
     1 def load_vectors(loc): 
     2  return (load_array(loc+'.dat'), 
----> 3   pickle.load(open(loc+'_words.pkl','rb')), 
     4   pickle.load(open(loc+'_idx.pkl','rb'))) 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128) 

답변

1

당신은 아마 pickle.load(f, encoding='latin1')에 대한 인코딩을 제공해야하지만, 파일에있는 모든 문자 인코딩을 따릅니다 확인하십시오.

기본적으로 피클 코드가 실패한 'ASCII'를 사용하여 파일을 디코딩하려고합니다. 대신 어떤 것을 사용할 지 명시 할 수 있습니다. Documentation에서 확인하십시오.

latin1이 해결되지 않으면 encoding='bytes'으로 시도한 다음 나중에 모든 키와 값을 디코딩하십시오.

+0

나는 csv를 사용할 때이 문제에 직면 해있다. 그것을 고치는 법을 알았습니까? –

+0

@radityagumay 읽고있는 동안 인코딩 옵션을 시도해 볼 수 있습니다. 파일을 어떻게 읽으며 파일에 무엇이 들어 있습니까? –

+0

그냥 csv 파일을 쓰려고합니다. 파일은 다음과 같습니다. https://paste.ofcode.org/CZk4aHSjvTwFfMU28JeRXk –

5

전체 csv 파일을 복사하여 텍스트에 붙여 넣는 방식으로이 문제를 해결했습니다. 이게 내 문제를 해결해.

 with open(self.path + "/review_collection.txt", "r", encoding="utf-8") as f: 
     read = f.read().splitlines() 
     for row in read: 
      print(row) 
관련 문제