Сохранение списков в Python в виде текстового файла с разделителями точкой с запятой - PullRequest
0 голосов
/ 30 октября 2018

У меня есть три списка в 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.

Я буду очень признателен за любую помощь.

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

Следующее будет работать с использованием модуля 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)
0 голосов
/ 30 октября 2018

Вы можете транспонировать свои строки, используя 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)

Это производит

Label1; Label2; Метка3
а1; 1; 20,0%
а2; 2; 25,1%
а3; 3; 51,2%
а4; 4; 60,2%
а5; 5; 75,0%

0 голосов
/ 30 октября 2018
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()
...