2012-03-07 6 views
1

Мой результат данных в список кортежей, каждый из которых имеет список в них:список записи кортежей списков в текстовый файл

[(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], ['I', 'J', 'K', 'L', 'M', 'N']), 
... 
(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], ['I', 'J', 'K', 'L', 'M', 'N'])] 

Какой самый лучший способ лишить все вложенности и кавычки и писать A: N для файла с разделителями табуляции?

ответ

4

Кавычки не являются частью строки, они обозначают строку. Вы не сможете их удалить.

csv module делает это TAKS довольно просто:

import csv, itertools 
with open('file.csv', 'wb') as f: 
    writer = csv.writer(f, delimiter="\t") 
    writer.writerows(list(itertools.chain(*t)) for t in results) 

Это приводит к файлу, в котором каждая строка соответствует кортеж и строка содержит буквы обоих списков, разделенных табуляцией.

+0

Хмм он работает, но выводит пустой файл .. я пропускаю что-то еще? – user1249464

+0

Я обновил код. Проблема заключалась в том, что файл еще не был закрыт 'csv.writer', и также кажется, что список не был сгенерирован должным образом ... он должен работать сейчас. –

+0

Отлично работает, спасибо – user1249464

-1

Рекурсивный - это естественный способ решить эту проблему.

пусть цель будет ваш список [([A, B ..]), ([A, B])]

def dump(target): 
    for obj in target: 
    if isinstance(obj,tuple) or isinstance(obj, list): 
     dump(obj) 
    else: 
     print(obj), 

dump(target) 
print() 
Смежные вопросы