簡體   English   中英

在python中將列表另存為以分號分隔的文本文件

[英]Saving lists in python as semicolon delimited text file

我在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%

除了以上述格式保存文件外,我還要在寫入最后一列時使用百分比符號。 我檢查了這篇文章,但是我仍然對如何實現這一點感到困惑。 我正在使用python 2.7。

我將非常感謝您的幫助。

使用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)
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()

您可以使用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%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM