将列表写入文件txt(utf-8)

时间:2016-11-05 09:47:41

标签: python

我尝试用没有BOM的编码utf-8写一个列表到txt文件。但有一个问题是: 如果我使用带有BOM编码的utf-8创建该文件:

false

并使用我的函数将其读入列表:

  ポ
  1
  田
  11
  直
  11
  子
  11

我得到了正确的结果: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']有什么不对?

1 个答案:

答案 0 :(得分:2)

您不应该替换尾随空格/换行符,因为它们可能因平台而异。你应该剥离它们。更重要的是,您只使用\n写入文件,但您的功能需要\r\n

file_to_list功能中,替换:

results.append(line.replace('\r\n', ''))

results.append(line.rstrip())

请参阅:

>>> 'some line\n'.replace('\r\n', '')
'some line\n'