使用一些自定义格式将列表写入文件

时间:2013-07-30 15:17:03

标签: python file list python-2.7 save

我在将文件保存到文件时遇到了一些问题,我尝试过的两种方法都产生了不需要的输出。

我尝试的第一种方式是:

savefile.write(str(full_list))

返回:

[u'Smith', u'Malte Low', u'Day', u'George']

我试过的另一种方式是:

for fitem in full_list:
    file.write(str(fitem))

返回:

SmithMalte LowDayGeorge

我理想地寻找它回归:

Smith, Malte, Low, Day, George

我不太确定如何使用.join来完成这项工作,但这似乎是最好的选择,我可能错了。

任何人都有任何想法我应该如何解决这个问题,我将不胜感激。

提前致谢 - Hy

2 个答案:

答案 0 :(得分:2)

你可以使用。

 ", ".join(full_list)

然后将结果写入文件。

请参阅代码段 -

>>> full_list = [u'Smith', u'Malte Low', u'Day', u'George']
>>> print ", ".join(full_list)
Smith, Malte Low, Day, George

编辑 - 看到你想要Malte Low之间的逗号,那么,你可以做到

>>> from itertools import chain
>>> ", ".join(chain.from_iterable(map(str.split, full_list)))
u'Smith, Malte, Low, Day, George'

答案 1 :(得分:1)

给出清单

[u'Smith', u'Malte Low', u'Day', u'George']

您可以尝试

savefile.write(','.join(full_list))

但那只会返回

Smith,Malte Low,Day,George

这可能不是你想要的输出,用','分隔单词而不是项目

所以你可能想做

  • join包含空格
  • 后跟split空格的结果字符串
  • 然后join以逗号显示

    savefile.write(','.join(' '.join(full_list).split()))
    

但是你必须多次迭代。要在单次迭代中执行操作,可以使用itertools.chain.from_iterable

from itertools import chain
savefile.write(','.join(itertools.chain.from_iterable(e.split()
                       for e in full_list)))