【问题标题】:Export list as .txt (Python)将列表导出为 .txt (Python)
【发布时间】:2010-02-22 04:54:06
【问题描述】:

我的 Python 模块有一个列表,其中包含我想在某处保存为 .txt 文件的所有数据。该列表包含几个元组,如下所示:

list = [ ('one', 'two', 'three'), ('four', 'five', 'six')]

如何打印列表,以便每个元组项目由制表符分隔,每个元组由换行符分隔?

谢谢

【问题讨论】:

    标签: python list csv export tuples


    【解决方案1】:

    您可以解决它,正如其他答案所建议的那样,只需加入行,但更好的方法是使用 python csv 模块,以便稍后您可以轻松更改分隔符或添加标题等并将其读回,看起来像您想要制表符分隔文件

    import sys
    import csv
    
    csv_writer = csv.writer(sys.stdout, delimiter='\t')
    rows = [ ('one', 'two', 'three'), ('four', 'five', 'six')]
    csv_writer.writerows(rows)
    

    输出:

    one two three
    four    five    six
    

    【讨论】:

    • 感谢您提供替代方法,但我太初学者无法尝试:)
    • 但是在方式上它更简单,因为你只使用标准库,但是对于初学者来说,你还必须知道如何用硬方式做到这一点:)
    • 很好的解决方案。不过,不要使用“列表”作为变量名。
    • -1 现在向初学者解释如何在没有 StringIO 的情况下执行此操作,这会引入不必要的复杂性并且速度很慢,并且会输出到文件。 5 个支持者???
    • @John Machin,我们是在写初学者教程还是正确的解决方案,写csv并不像听起来那么简单,如果可以的话最好使用标准库,并且StringIO在很多地方都使用在 python 中,接口采用文件类型对象
    【解决方案2】:
    print '\n'.join('\t'.join(x) for x in L)
    

    【讨论】:

    • 说'序列项0:预期的字符串,找到元组'
    【解决方案3】:

    试试这个

    "\n".join(map("\t".join,l))
    

    测试

    >>> l = [ ('one', 'two', 'three'), ('four', 'five', 'six')]
    >>> print "\n".join(map("\t".join,l))
    one     two     three
    four    five    six
    >>>
    

    【讨论】:

    • map 构建列表 -- 没必要。
    【解决方案4】:
    open("data.txt", "w").write("\n".join(("\t".join(item)) for item in list))
    

    【讨论】:

    • 说'参数 1 必须是字符串或只读字符缓冲区,而不是生成器'
    【解决方案5】:

    恕我直言,最惯用的方法是使用列表推导和连接:

    print '\n'.join('\t'.join(i) for i in l)
    

    【讨论】:

    • 我在这里看不到列表理解。
    【解决方案6】:

    您不必提前加入列表:

    with open("output.txt", "w") as fp:
        fp.writelines('%s\n' % '\t'.join(items) for items in a_list)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 2019-08-04
      相关资源
      最近更新 更多