【问题标题】:Python format outputPython 格式输出
【发布时间】:2013-07-04 12:50:09
【问题描述】:

我是python新手。我有一堆包含在“allsets”列表中的集合。 在每组中,我有多个字符串元素。我需要在一个文本文件中打印我的所有集合,但是,我想找到一种用“|”分隔每个元素的方法并在开头打印集合的名称。例如:

s1= [string1, string2...]
s2= [string3, string4...]
allsets= [s1,s2,s3...]

我在文本文件中的理想输出应该是:

s1|string1|string2
s2|string3|string4

这是我到目前为止编写的代码,但它只返回一个(错误的)行:

for s in allsets:
   for item in s:
     file_out.write("%s" % item)

有什么帮助吗?谢谢!

【问题讨论】:

    标签: python text formatting


    【解决方案1】:

    这些不是“集合”,在 Python 中,它们只是列表。

    变量的名称(s1 等)不容易以编程方式获得,因为 Python 变量......很奇怪。请注意,您可以为同一个对象指定多个名称,因此只有一个名称并不明显。

    您可以使用字典来解决这个问题:

    allsets = { "s1": s1, "s2": s2, ...}
    
    for k in allsets.keys():
      file_out.write("%s|%s" % (k, "|".join(allsets[k]))
    

    【讨论】:

    • 感谢您的解释和解决方案! :)
    【解决方案2】:
    for s in allsets:
       for item in s:
         file_out.write("%s|" % item)
       file_out.write("\n")
    

    \n 换行。

    【讨论】:

    • 谢谢!是否可以在字符串的开头包含集合的名称?
    • 如果您可以从 allsets 中检索集合的名称,则可以。说name_s是集合s的名字,可以在外循环,内循环之前加上file_out.write("%s|"%name_s)。
    • 感谢您的快速!
    【解决方案3】:

    查看 CSV 模块。 IT 为您做所有事情

    这是来自documentation的示例

    import csv
    with open('eggs.csv', 'wb') as csvfile:
        spamwriter = csv.writer(csvfile, delimiter=' ',
                                quotechar='|', quoting=csv.QUOTE_MINIMAL)
        spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
        spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
    

    【讨论】:

      猜你喜欢
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 2014-01-29
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多