2017-08-17 4 views
1

Ich las den Artikel "Unicdoe Pain" vor Tagen. Und ich behalte das "Unicode Sandwich" im Hinterkopf. enter image description hereMuss ich die Unicode-Variable vor dem Schreiben in die Datei codieren?

Jetzt muss ich umgehen einige Chinesen und ich habe eine Liste bekam

chinese = [u'中文', u'你好'] 

Do i Codierung gehen müssen, bevor eine Datei zu schreiben?

add_line_break = [word + u'\n' for word in chinese] 
encoded_chinese = [word.encode('utf-8') for word in add_line_break] 
with open('filename', 'wb') as f: 
    f.writelines(encoded_chinese) 

Irgendwie finde ich das in Python2. Ich kann dies tun:

chinese = ['中文', '你好'] 
with open('filename', 'wb') as f: 
    f.writelines(chinese) 

keine Unicode-Angelegenheit berechnet. : D

+0

Zum Lesen/Schreiben von Dateien verwenden Sie die Funktion [codecs.open] (https://docs.python.org/3/library/codecs.html#codecs.open) statt mit der Codierung - die 'Bytes' (Python2 'str') Typ muss nicht mehr manuell in Ihrer Anwendung verwaltet werden, wenn alles richtig' str' (Python2 'Unicode') Typen sein wird. – metatoaster

Antwort

1

Sie müssen das nicht tun, können Sie io oder codecs verwenden, um die Datei mit Codierung zu öffnen.

import io 
with io.open('file.txt', 'w', encoding='utf-8') as f: 
    f.write(u'你好') 

codecs.open hat die gleiche Syntax.

+0

Besser noch, verwenden Sie 'io.open'. Es ist kompatibel mit Python 3 'open' und Aids-Portierung später. –

0

In python3;

with open('file.txt, 'w', encoding='utf-8') as f: 
    f.write('你好') 

wird gut tun.

+0

Ja. Ich habe herausgefunden, dass ich das auch in python2 machen kann. Warum nehmen wir Unicode-Typ in unser Programm? Warum deklarieren Sie nicht überall Byte-Text? – Tianqing

Verwandte Themen