2017-04-03 55 views
2

我有一大堆的Unicode字符,不帶空格Python的 - Unicode文件IO

例如

一個行的txt文件,我想輸出一個txt文件每行有一個字符

當我試圖做到這一點時,我想最終會分裂unicode charachters,我該怎麼做呢?

+0

您可以包含迄今爲止嘗試過的代碼嗎? –

回答

-1

這工作在Python 3.5

line = "" 
with open("file.txt", "w", encoding="utf8") as f: 
    f.write("\n".join(line)) 
3

有與一堆的Unicode字符的文本文件沒有這樣的東西,它纔有意義談論一個「Unicode的對象」,一旦該文件已被閱讀並解碼成Python對象。這種或那種方式對文本文件中的數據進行編碼。

所以,問題是關於以正確的方式讀取文件,以便正確解碼字符到unicode對象。

import io 
enc_source = enc_target = 'utf-8' 
with io.open('my_file.txt', encoding=enc_source) as f: 
    the_line = f.read().strip() 
with io.open('output.txt', mode='w', encoding=enc_target) as f: 
    f.writelines([c + '\n' for c in the_line]) 

上面我假設目標和源文件的編碼都是utf-8。這不一定是這種情況,你應該知道源文件是用什麼編碼的。你可以選擇enc_target,但有人必須告訴你enc_source(該文件本身不能告訴你)。

+0

只是出於好奇,是否有任何優勢/不同於'codecs.open()'方法?或者'編解碼器是Python 2的東西? – patrick

+1

我只是補充說'io.open'是交叉編譯的更好的方法,'編解碼器'是遺留的。有一些技術上的差異,你可以谷歌它,如果感興趣。 – wim