将python中的列表保存为分号分隔的文本文件

Posted

技术标签:

【中文标题】将python中的列表保存为分号分隔的文本文件【英文标题】:Saving lists in python as semicolon delimited text file 【发布时间】:2018-10-30 06:17:44 【问题描述】:

我在 Python 中有三个列表。我想将这些列表保存为分号分隔的文本文件(带有标题)。

例如,让我们考虑以下三个列表:

l1 = ['a1', 'a2', 'a3', 'a4', 'a5']
l2 = [1,2,3,4,5]
l3 = [20.0, 25.1, 51.2, 60.2, 75.0]

和标题,['Label1', 'Label2', 'Label3']

我希望将这些列表保存为文本文件中的列,格式如下:

Label1; Label2; Label3
a1;1;20.0%
a2;2;25.1%
a3;3;51.2%
a4;4;60.2%
a5;5;75.0%

除了以上述格式保存文件外,我还想在写最后一列时有百分比符号。我检查了this 的帖子,但我仍然对如何实现这一点感到困惑。我正在使用 python 2.7。

我将非常感谢任何帮助。

【问题讨论】:

节省 0.2 而不是 20% 不是更有用吗? timgeb:谢谢你的建议。我很想听从你的建议。但是,我需要在这里遵守既定的标准。 为什么标题行有多余的空格? 【参考方案1】:

以下将起作用,使用csv 模块和zip

l1 = ['a1', 'a2', 'a3', 'a4', 'a5']
l2 = [1,2,3,4,5]
l3 = [20.0, 25.1, 51.2, 60.2, 75.0]
header = ['Label1', 'Label2', 'Label3'] 

import csv

with open('output.csv', 'w') as f:
    w = csv.writer(f, delimiter=';')
    w.writerow(header)
    for row in zip(l1, l2, (str(x)+'%' for x in l3)):
        w.writerow(row)

【讨论】:

【参考方案2】:
l1 = ['a1', 'a2', 'a3', 'a4', 'a5']
l2 = [1,2,3,4,5]
l3 = [20.0, 25.1, 51.2, 60.2, 75.0]
answer = ''
for i in range(len(l1)):
    value = "0;1;2%".format(l1[i], l2[i], l3[i])
    answer = answer+"\n"+value

header = ['Label1', 'Label2', 'Label3'] 
title = ';'.join(header)
answer = title + answer
print(answer)

file = open("answer.txt","w") 
file.write(answer)
file.close()

【讨论】:

代替打印写入文件 Alfred Ayi-bonte:感谢您的回答。如何将此字符串“答案”保存为文本文件?另外,我想将标题保留为文本文件中的第一行。我该怎么做? @Ross 使用 ``` file = open("answer.txt","w") file.write(answer) file.close()`` 写出你的答案【参考方案3】:

您可以使用zip 转置您的行,然后使用csv 模块处理它们。

>>> import csv
>>> l1 = ['a1', 'a2', 'a3', 'a4', 'a5']
>>> l2 = [1,2,3,4,5]
>>> l3 = [20.0, 25.1, 51.2, 60.2, 75.0]
>>> l3_percent = ['!r%'.format(x) for x in l3]
>>> header = ['Label1', 'Label2', 'Label3']
>>> rows = zip(l1, l2, l3_percent)
>>>
>>> with open('out.csv', 'w') as f:
...:    writer = csv.writer(f, delimiter=';', quoting=csv.QUOTE_NONE)
...:    writer.writerow(header)
...:    writer.writerows(rows)

这会产生

标签1;标签2;标签3 a1;1;20.0% a2;2;25.1% a3;3;51.2% a4;4;60.2% a5;5;75.0%

【讨论】:

timgeb:非常感谢。你的建议效果很好。 :-)

以上是关于将python中的列表保存为分号分隔的文本文件的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式猜测 CSV 文件是逗号还是分号分隔

使用 pyspark 更改分隔符并将其保存为 HDFS 中的文本文件

导出CSV文件是以逗号为分隔符的吗?

如何将Excel文档转换成UTF-8格式的文本文件

使用python将文件列表保存到文本文件中

使用python将文本文件转换为excel文件(制表符分隔)