2017-05-19 6 views
0
text_file = open("university_towns.txt") 
State = {idx: lines.decode('utf-8').strip().replace("[edit]", "") 
      for idx,lines in enumerate(text_file) if "edit" in lines} 

위치에 바이트 0xe2을 디코딩 할 수 없습니다 내가 파이썬 3.5 사용하고'아스키'코덱은 내 코드에서 오류가 발생 6723 파이썬 3.5

'ascii' codec can't decode byte 0xe2 in position 6723  

.

+0

파이썬이 파이썬 3! ? –

+0

6723 바이트가 올바른 유니 코드가 아닌 것 같습니다. 'errors = 'ignore'를'decode()'에 건네면 도움이 될 것입니다. –

+1

파이썬 3.x에서는 인코딩을 지정하지 않았기 때문에'sys.getdefaultencoding()'이 말하는 모드로 파일을 열었습니다. 'lines.decode ('utf-8')'는 유효하지 않습니다. 왜냐하면 3.x 문자열에는'decode' 메쏘드가 없으므로 그렇게 멀리 가지 않았거나 다른 오류가있었습니다. 내 생각 엔 문제는'enumerate (text_file)'에있다. 그러나 그것은 기본 인코딩이'ascii'라는 것을 의미한다. 파일을 한 줄씩 읽고 오류를 일으키는 지 확인할 수 있습니다. – tdelaney

답변

1

제거 디코드 ("UTF-8) 두 번째 줄에서은과가 문제를 해결하는 수도 있습니다! 파이썬 2와

을 우리는 관련 문제에 대한 인코딩 및 디코딩을 사용한다.하지만 파이썬 3.x의에서, STR/바이트가 비슷한 사용할 수 있도록

다음과 같은 기준 읽어 안된다 :.

python-3-encode-decode-vs-bytes-str

희망, 그것은 도움이

+0

정말 감사합니다. –