[python] 파일에서 읽고 utf-8에 저장하는 Python

파일에서 읽기, 문자열 처리 및 UTF-8 파일에 저장하는 데 문제가 있습니다.

다음은 코드입니다.

try:
    filehandle = open(filename,"r")
except:
    print("Could not open file " + filename)
    quit()

text = filehandle.read()
filehandle.close()

그런 다음 가변 텍스트를 처리합니다.

그리고

try:
    writer = open(output,"w")
except:
    print("Could not open file " + output)
    quit()

#data = text.decode("iso 8859-15")    
#writer.write(data.encode("UTF-8"))
writer.write(text)
writer.close()

이것은 파일을 완벽하게 출력하지만 내 편집기에 따르면 iso 8859-15에서 그렇게합니다. 같은 편집기가 입력 파일 (변수 파일 이름에 있음)을 UTF-8로 인식하기 때문에 왜 이런 일이 발생했는지 모르겠습니다. 내 연구에 따르면 주석이 달린 줄은 문제를 해결해야합니다. 그러나 그 줄을 사용할 때 결과 파일은 주로 텍스트가 스페인어로 물결표가있는 단어 인 특수 문자로 횡설수설합니다. 난 정말 당황해서 도움을 주시면 감사하겠습니다 ….



답변

codecs모듈을 사용하여 프로그램의 I / O 경계에서 유니 코드와의 텍스트를 처리합니다 .

import codecs
with codecs.open(filename, 'r', encoding='utf8') as f:
    text = f.read()
# process Unicode text
with codecs.open(filename, 'w', encoding='utf8') as f:
    f.write(text)

편집 :io모듈은 이제 코덱 대신 권장되며 Python 3의 open구문 과 호환되며 Python 3을 사용하는 open경우 Python 2 호환성이 필요하지 않은 경우 에만 사용할 수 있습니다 .

import io
with io.open(filename, 'r', encoding='utf8') as f:
    text = f.read()
# process Unicode text
with io.open(filename, 'w', encoding='utf8') as f:
    f.write(text)


답변

아래 코드로도 통과 할 수 있습니다.

file=open(completefilepath,'r',encoding='utf8',errors="ignore")
file.read()


답변

open을 사용하여 그렇게 할 수 없습니다. 코덱을 사용하십시오.

오픈 내장 함수를 사용하여 파이썬에서 파일을 열 때 항상 파일을 ascii로 읽고 쓸 것입니다. utf-8로 작성하려면 다음을 시도하십시오.

import codecs
file = codecs.open('data.txt','w','utf-8')


답변