Список кортежей в текстовый файл - PullRequest
1 голос
/ 17 апреля 2020

У меня есть список, состоящий из строки и числа, например:

mylist= [('AGT', 3), ('GTT', 2), ('TTC', 2), ('GTA', 1), ('TAC', 1), ('ACG', 1)]

, и я хочу напечатать в выходной файл, подобный этому

#output.txt
AGT,3
GTT,2
TTC,2
GTA,1
TAC,1
....

I попробовал этот код

     with open('output.txt', 'w+') as file:
             file.write('\n'.join(map(str, mylist))) #the join function convert the list to string
     return kFreq

и вот вывод:

('AGT', 3)
('GTT', 2)
('TTC', 2)
('GTA', 1)
('TAC', 1)
('ACG', 1)

как мне избавиться от символа (и ''?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Вы должны перебирать кортежи и join их в строки. Также вам нужно привести все элементы к str для этого:

print(*(','.join(map(str,i)) for i in mylist), sep='\n')

AGT,3
GTT,2
TTC,2
GTA,1
TAC,1
ACG,1

Если вы хотите, чтобы это было в файле:

with open("output.txt", "w") as text_file:
    text_file.write('\n'.join([','.join(map(str,i)) for i in mylist]))
0 голосов
/ 17 апреля 2020

Для меня это выглядит как задание для так называемых f-строк . Я бы сделал это следующим образом:

mylist= [('AGT', 3), ('GTT', 2), ('TTC', 2), ('GTA', 1), ('TAC', 1), ('ACG', 1)]
output = '\n'.join(f"{x},{y}" for x,y in mylist)
print(output)  # print to stdout for demonstration purposes

Вывод:

AGT,3
GTT,2
TTC,2
GTA,1
TAC,1
ACG,1

Имейте в виду, что для этого требуется Python 3.6 или новее, если вы ограничены более старой версией, вы можете использовать более старые способы например .format:

output = '\n'.join("{},{}".format(x,y) for x,y in mylist)

Независимо от вашего выбора, output готов к записи в файл, то есть:

with open('output.txt', 'w+') as file:
    file.write(output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...