줄을 서야 한다." 결과 UnicodeDecodeError: 'utf-8' 코덱이 바이트를 디코딩할 수 없습니다.
여기 제 코드가 있습니다.
for line in open('u.item'):
# Read each line
이 코드를 실행할 때마다 다음 오류가 발생합니다.
UnicodeDecodeError: 'utf-8' 코덱이 위치 2892에서 바이트 0xe9를 디코딩할 수 없습니다. 잘못된 연속 바이트입니다.
이 문제를 해결하고 open()에 파라미터를 추가하려고 했습니다.코드는 다음과 같습니다.
for line in open('u.item', encoding='utf-8'):
# Read each line
그러나 다시 같은 오류가 발생합니다.그럼 난 어쩌라는 거야?
마크 랜섬의 제안대로, 저는 그 문제에 대한 올바른 인코딩을 찾았습니다.인코딩은 이므로 치환합니다.open("u.item", encoding="utf-8")
open('u.item', encoding = "ISO-8859-1")
문제가 해결됩니다.
다음과 같은 것이 나에게도 통했다.ISO 8859-1은 음성인식 API를 주로 활용하면 많은 비용을 절감할 수 있다.
예:
file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1")
파일에는 실제로 UTF-8 인코딩된 데이터가 포함되어 있지 않습니다.하다 에서 합니다.open
discl.discl.discl을 클릭합니다.
예를 들어 Windows-1252 인코딩에서는0xe9
그 캐릭터가 될 것이다.é
.
판다를 사용하여 읽어보십시오.
pd.read_csv('u.item', sep='|', names=m_cols, encoding='latin-1')
이 방법은 다음과 같습니다.
open('filename', encoding='latin-1')
또는 다음 중 하나를 선택합니다.
open('filename', encoding="ISO-8859-1")
Python 2 를 사용하고 있는 경우는, 다음과 같은 솔루션이 됩니다.
import io
for line in io.open("u.item", encoding="ISO-8859-1"):
# Do something
냐하 because는encoding
open()
, 라고 합니다.
TypeError: 'encoding'은 이 함수의 잘못된 키워드 인수입니다.
다음 방법으로 문제를 해결할 수 있습니다.
for line in open(your_file_path, 'rb'):
'binary'는 바이너리 모드로 파일을 읽는 것입니다.자세한 것은 이쪽.
다음과 같이 시험해 볼 수 있습니다.
open('u.item', encoding='utf8', errors='ignore')
Stackoverflow에 대한 다른 질문과 이 게시물의 이전 답변을 바탕으로 올바른 인코딩을 찾기 위한 도움말을 추가하고 싶습니다.
OS 하고 있는 는, Linux OS 로 을 취득할 수 .file
★★★★★★★★★★★★★★★★★★:
file --mime-encoding <filename>
이를 위한 python 스크립트를 다음에 나타냅니다.
import sys
import subprocess
if len(sys.argv) < 2:
print("Usage: {} <filename>".format(sys.argv[0]))
sys.exit(1)
def find_encoding(fname):
"""Find the encoding of a file using file command
"""
# find fullname of file command
which_run = subprocess.run(['which', 'file'], stdout=subprocess.PIPE)
if which_run.returncode != 0:
print("Unable to find 'file' command ({})".format(which_run.returncode))
return None
file_cmd = which_run.stdout.decode().replace('\n', '')
# run file command to get MIME encoding
file_run = subprocess.run([file_cmd, '--mime-encoding', fname],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
if file_run.returncode != 0:
print(file_run.stderr.decode(), file=sys.stderr)
# return encoding name only
return file_run.stdout.decode().split()[1]
# test
print("Encoding of {}: {}".format(sys.argv[1], find_encoding(sys.argv[1])))
이 데이터 세트를 읽는 동안 Kaggle에서 다운로드한 데이터 세트를 사용하고 있었는데 다음과 같은 오류가 발생했습니다.
UnicodeDecodeError: 'utf-8' 코덱이 위치 183에서 바이트 0xf1을 디코딩할 수 없습니다. 계속 바이트가 잘못되었습니다.
그래서 이렇게 고쳤어요.
import pandas as pd
pd.read_csv('top50.csv', encoding='ISO-8859-1')
다음 예제에서는 Python 3에서 CSV 파일을 변환하는 방법을 보여 줍니다.
try:
inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
pass
사용할 때 가끔open(filepath)
filepath
실제로는, 같은 에러가 발생하는 파일이 아니기 때문에, 우선, 여는 파일이 존재하는 것을 확인해 주세요.
import os
assert os.path.isfile(filepath)
Notepad++로 파일을 열고 "Encoding" 또는 "Encodage" 메뉴를 선택하여 ANSI에서 UTF-8 또는 ISO 8859-1 코드 페이지를 식별하거나 변환합니다.
비슷한 질문(UTF-8 오류)에 대한 구글 요청을 웹페이지에서 더 빨리 검색할 수 있도록 다른 사용자를 위해 여기에 위안을 남겨둡니다.
이 설명으로 .csv 파일을 여는 데 문제가 있었습니다.
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 150: invalid continuation byte
노트 패드로 파일을 열어 150번째 위치를 세어 보았습니다.그것은 키릴 기호입니다.인코딩 UTF-8을 사용하여 'Save as..' 명령어로 파일을 다시 저장했고 프로그램이 작동하기 시작했습니다.
이 에러가 계속 발생하며, 대부분의 경우 다음 방법으로 해결이 되지 않습니다.encoding='utf-8'
하지만 사실은engine='python'
다음과 같습니다.
import pandas as pd
file = "c:\\path\\to_my\\file.csv"
df = pd.read_csv(file, engine='python')
df
문서에 대한 링크는 다음과 같습니다.
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html
인코딩이 encoding='로 대체되었습니다.ISO-8859-1'
opensubu.item' 행의 경우 encoding='ISO-8859-1':
인쇄(행)
github 또는 kaggle DF=pd.read_csv(file,encoding=')에서 직접 데이터를 로드하는 경우 사용합니다.ISO-8859-1')
UnicodeDecodeError: 'utf-8' 코덱이 위치 7044에 0x화된 바이트를 디코딩할 수 없습니다. 계속 바이트가 잘못되었습니다.
위의 오류는 인코딩으로 인해 발생합니다.
해결책:- "http='latin-1'" 사용
참고 자료: - https://pandas.pydata.org/docs/search.html?q=encoding
제 경우 Excel 파일(.xlsx)의 확장자를 직접 (.csv) 파일로 수정했기 때문에 이 문제가 발생하였습니다.
해결방법은 파일을 열고 새로운 (.csv) 파일로 저장하는 것입니다(즉, 파일 -> 다른 이름으로 저장 > 확장자(.csv)를 선택하여 저장하는 것입니다).이건 나한테 효과가 있었어.
언급URL : https://stackoverflow.com/questions/19699367/for-line-in-results-in-unicodedecodeerror-utf-8-codec-cant-decode-byte
'programing' 카테고리의 다른 글
마리아답:WHERE 절에서 창 함수 LAG 결과 사용 (0) | 2023.01.15 |
---|---|
PHP에서 닫힘...정확히 무엇을 언제 사용할 필요가 있는가? (0) | 2023.01.15 |
PyLint 메시지: logging-format-interpolation (0) | 2023.01.15 |
Java에서 문자열을 곱하여 시퀀스를 반복할 수 있습니까? (0) | 2023.01.15 |
WHERE 절에서 mysql concat()을 사용하고 있습니까? (0) | 2023.01.15 |