I'm a ter problemas de leitura de um ficheiro, processar a sua string e guardar para um ficheiro UTF-8.
Aqui está o código:
try:
filehandle = open(filename,"r")
except:
print("Could not open file " + filename)
quit()
text = filehandle.read()
filehandle.close()
Faço então algum processamento sobre o texto variável.
E depois
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()
Isto produz o ficheiro na perfeição, mas fá-lo no iso 8859-15 de acordo com o meu editor. Uma vez que o mesmo editor reconhece o ficheiro de entrada (no nome do ficheiro variável) como UTF-8 eu não sei'não sei porque é que isto aconteceu. Na medida em que a minha pesquisa mostrou que as linhas comentadas deveriam resolver o problema. Contudo, quando utilizo essas linhas, o ficheiro resultante tem algarismos em carácter especial, principalmente palavras com til como o texto está em espanhol. Gostaria muito de qualquer ajuda, pois estou perplexo....
Processar texto de e para Unicode nos limites de E/S do seu programa utilizando o módulo `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)
Editar: O módulo io
é agora recomendado em vez dos codecs e é compatível com a sintaxe Python 3's open
:
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)
Também se pode passar através do código abaixo:
file=open(completefilepath,'r',encoding='utf8',errors="ignore")
file.read()
Pode't fazer isso usando codecs abertos.
quando se abre um ficheiro em python utilizando a função de abertura integrada, o ficheiro será sempre lido/escrito em ascii. Para o escrever em utf-8, experimente isto:
import codecs
file = codecs.open('data.txt','w','utf-8')