BOMのないエンコーディングutf-8を使ってtxtファイルにリストを書き込もうとしました。しかし、問題を持っていることである: 私は、BOMのエンコーディングwithou UTF-8でそのファイルを作成した場合:リストをファイルに書き込むtxt(utf-8)
ポ
1
田
11
直
11
子
11
を、リストにそれを読むために私の機能を使用します。私はOK結果を得た
import codecs
def file_to_list(file_name):
results = []
f = codecs.open(file_name, encoding='utf-8')
for line in f:
results.append(line.replace('\r\n', ''))
return results
list_1 = file_to_list('test_read.txt')
print(list_1)
:['ポ', '1', '田', '11', '直', '11', '子', '11']
しかし、この後、私は再びそのファイルを提出して読み取るために書き戻すために別の関数を使用して、問題が表示されます。
def list_to_file(file_name, thelist):
f = codecs.open(file_name, "w", encoding='utf-8')
for item in thelist:
f.write("%s\n" % item)
list_to_file('test_read.txt', list_1)
list_2 = file_to_list('test_read.txt')
print(list_2)
印刷の返品は:['ポ\n', '1\n', '田\n', '11\n', '直\n', '11\n', '子\n', '11\n']
だから、'\n'
を作るのは間違っていますか?
'line.replace( 'の\ r \ n'、 ' ') 'は' list_to_file'で書かれた普通の '\ n''バイトには触れません。ところで、Py2とPy3はUnicodeの処理に大きな違いがあるので、Pythonのバージョンには常にUnicodeに関する質問があります。また、UTF-8でエンコードされたファイルは、何らかの壊れたソフトウェアで使用する必要がある場合を除いてBOMで始まらなければなりません。 –
@ PM2Ringあなたはそれを削除する方法を教えてもらえますか? – AlphaWolf
あなたはモーゼの答えを試してください!この記事が参考になるかもしれません:[Pragmatic Unicode](http://nedbatchelder.com/text/unipain.html)、SOベテランのNed Batchelderによって書かれました。 –