2012-03-07 112 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()