将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中的列表保存为分号分隔的文本文件的主要内容,如果未能解决你的问题,请参考以下文章