2012-03-07 115 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'])] 

什麼是去除所有的嵌套和報價,寫的最好辦法答: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 2012-03-07 10:28:30

+0

我更新了代碼。問題是該文件還沒有被'csv.writer'關閉,而且似乎該列表沒有正確生成......它現在應該可以工作。 – 2012-03-07 10:37:19

+0

完美地工作,謝謝 – user1249464 2012-03-07 10:40:06

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