【问题标题】:Writing lists to a file with some custom formatting使用一些自定义格式将列表写入文件
【发布时间】:2013-07-30 15:17:03
【问题描述】:

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

我尝试的第一种方法是:

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 来完成这项工作,但这似乎是最好的选择,我可能错了。

有人知道我应该如何解决这个问题,不胜感激。

提前致谢 - 嗨

【问题讨论】:

    标签: python file list python-2.7 save


    【解决方案1】:

    你可以使用。

     ", ".join(full_list)
    

    然后将结果写入文件。

    查看sn-p -

    >>> 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'
    

    【讨论】:

    • 不知道我能做到。谢谢。 :)
    【解决方案2】:

    给定列表

    [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)))
    

    【讨论】:

      猜你喜欢
      • 2019-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 2015-12-13
      • 2014-09-14
      • 2014-12-01
      相关资源
      最近更新 更多