Подтвердить что ты не робот

Чтение Python из файла и сохранение в utf-8

У меня возникают проблемы с чтением из файла, обработкой его строки и сохранением в файле 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, я не знаю, почему это произошло. Что касается моего повторного поиска, то прокомментированные строки должны решить проблему. Однако, когда я использую эти строки, результирующий файл имеет тарабарщину в специальном характере в основном, слова с тильдой, поскольку текст находится на испанском языке. Я бы очень признателен за любую помощь, поскольку я в тупике....

4b9b3361

Ответ 1

Обработайте текст в и из Unicode на границах ввода/вывода вашей программы, используя модуль codecs:

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 теперь рекомендуется вместо кодеков и совместим с open синтаксисом Python 3:

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)

Ответ 2

Вы также можете пройти через код ниже:

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

Ответ 3

Вы не можете сделать это, используя open. использовать кодеки.

когда вы открываете файл в python, используя открытую встроенную функцию, вы всегда будете читать/записывать файл в ascii. Чтобы записать его в utf-8, попробуйте следующее:

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