我怎样才能打印一个列表集合到一个文件,用python,在一个很容易放入excel的格式,消除所有不需要的字符?

我一直在使用

for item in dictlist: print>>working_outfile, item 

将一组列表打印到一个.txt文件,然后用excel打开,然后我可以将列表转换成逗号分隔的文件,创build一个电子表格。

问题是,当我有这个打开,我一直在去手动取代第一个打开和closures的括号,所有的撇号,“集[”和括号字符,以清理传播的外观片。

任何build议或指示如何我可以修复此打印,以便该程序的其他用户不必学习如何find并replace所有这些字符?

编辑:它最终提供的输出看起来像这样:

('aaa'| set(['stuff'|'eggs'|'spam']))

('bbb'| set(['stuff'|'eggs'|'spam']))

('ccc'| set(['stuff'|'spam']))

在哪里| 是下一个单元格

而且我要:

aaa | 东西| 鸡蛋| 垃圾邮件

bbb | 东西| 鸡蛋| 垃圾邮件

ccc | 东西| 垃圾邮件

打印字典的例子是:

(''gcagag',set(['FlyingFox mef2d upstream a1','Gibbon mef2a upstream a1','Elephant mef2d upstream a1','Gorilla mef2c upstream a1','gibbon mef2c upstream a1','Monkey mef2d upstream a1' ,'Gorilla mef2a上游a1','恒河猴mef2c上游a1','MouseLemur mef2d上游a1','BrownBat mef2d上游a1','海豚mef2d上游a1','功夫pandas!mef2d上游a1','犰狳mef2d上游a1','chimp mef2d上游a1','Chimp mef2a上游a1','Marmoset mef2d上游a1','兔子mef2d上游a1','EuroShrew mef2d上游a1','Alpaca mef2d上游a1','黑猩猩mef2c上游a1','EuroHedgeHog mef2d上游a1','狗mef2d上游a1','鼠标mef2d上游a1','长臂猿mef2d上游a1','鼠mef2d上游a1','大猩猩mef2d上游a1','猩猩mef2d上游a1'')),('aaataa',set(['mouse mef2c upstream a1','Alpaca mef2a upstream a1','horse mef2a upstream a1','opossum mef2a upstream a1','长臂猿mef2a上游a1','MouseLemur mef2a上游a1','大象mef2a上游a1','豚鼠mf2a上游a1','大鼠mef2d上游a1','海豚mef2a上游a1','大猩猩mef2a上游a1','恒河猴mef2c上游a1','小鼠mef2a上游a1','狗mef2c上游a1','人类mef2a上游a1','黑猩猩mef2a上游a1','猩猩mef2a上游a1']))]

注意这里有两个项目及其关联的集合。 实际的词典有500-40000个项目,所以这只是一个小小的缩减

看起来你有一个元组列表,每个元组包含一个string和一个集合。 所以,为了正确使用CSV编写器,你需要每个元组都是“平坦”的:

 import csv writer = csv.writer(open('output.csv', 'wb')) for item in mydata: # mydata is your list of tuples, so item is a tuple row = [item[0]] + list(item[1]) writer.writerow(row) 

您可以使用csv模块。 http://docs.python.org/library/csv.html#csv.writer

 >>> import csv >>> spamWriter = csv.writer(open('eggs.csv', 'wb'), delimiter=',') >>> spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) 

与你的代码相关(在查看print dictlist的输出后更新)。

 >>> import csv >>> spamWriter = csv.writer(open('eggs.csv', 'wb'), delimiter=',') >>> for item in dictlist: tmp = [item(0)] tmp.extend(item[1]) spamWriter.writerow(tmp) 

如果您只想将数字列表作为CSV文件,您可以执行以下操作

 >>> somelist=[set(random.sample(xrange(1,100),4)) for i in range(1,5)] >>> out = repr(somelist).translate(None,"([)]").replace("set","") '8, 98, 91, 10, 27, 3, 85, 37, 64, 33, 11, 69, 32, 83, 85, 38' 

然后,您可以将string写入文件。

或者,如果string可能包含作为表示的一部分添加的字符,则也可以将该集合展开为数字或string的列表

 >>> somelist=[set(random.sample(xrange(1,100),4)) for i in range(1,5)] >>> [e for s in somelist for e in s] [17, 43, 63, 97, 16, 65, 58, 11, 49, 10, 91, 95, 41, 20, 85, 70] >>> 

您也可以使用csv模块将数据写入文件

从OP的评论,因为他想在不同的行集,这是一个更新

 >>> fin=open('somecsv.csv', 'wb') >>> csvwriter = csv.writer(open('somecsv.csv', 'wb'), delimiter=',') >>> for s in somelist: csvwriter.writerow(list(s)) >>> fin.close()