【问题标题】:print lists in a file in a special format in python在python中以特殊格式打印文件中的列表
【发布时间】:2010-10-29 11:18:46
【问题描述】:

我有很多列表,例如:

X = [['a','b','c','d','e','f'],['c','f','r'],['r','h','l','m'],['v'],['g','j']]

每个内部列表都是一个句子,这些列表的成员实际上是这个句子的单词。我想把这个列表写在一个文件中,这样每个句子(内部列表)都在文件中的单独行中,并且每行都有一个数字,对应于这个内部列表(句子)在大 this 中的位置。在上述情况下。我希望输出看起来像这样:

1. a b c d e f
2. c f r
3. r h l m
4.v
5.g j

我需要将它们以这种格式写入“文本”文件中。任何人都可以建议我在 python 中使用它的代码吗? 谢谢

【问题讨论】:

    标签: python list file nested-lists


    【解决方案1】:
    with open('somefile.txt', 'w') as fp:
      for i, s in enumerate(X):
        print >>fp, '%d. %s' % (i + 1, ' '.join(s))
    

    【讨论】:

    • fp.write("{row}. {sentence}\n".format(row=i, sentence=' '.join(s))) 如果您不喜欢 >> 打印语法。
    • 这有点小问题,计数器总是从 2 开始!
    • 打印 >>fp, '%d. %s' % (i, ' '.join(s)) i += 1 将完成这项工作 ;)
    【解决方案2】:
    with open('file.txt', 'w') as f:
        i=1
        for row in X:
            f.write('%d. %s'%(i, ' '.join(row)))
            i+=1
    

    【讨论】:

    • 你错过了换行符。
    • enumerate 是有原因的。
    • 我不确定 enumerate() 是否会创建生成器对象,因此 enumerate() 对于大型列表可能会占用大量内存/cpu。如果 enumerate() 将创建一个生成器,则前面的示例可能更可取。
    • 在文档和/或测试中查找是一件容易的事。 enumerate: Return an enumerate object.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2011-11-13
    • 2021-12-31
    • 2021-10-13
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多