如何使用python将集合列表打印到一个文件中,以一种易于放入excel的格式,消除所有不需要的字符?

2024-10-02 08:29:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用

for item in dictlist:
    print>>working_outfile, item

要将列表打印为.txt文件,然后用excel打开该文件,然后我可以将列表转换为逗号分隔的文件,并创建电子表格。你知道吗

问题是,当我打开这个时,我一直在手动替换第一个开括号和右括号、所有撇号、“set[”和右括号字符,以便清理电子表格的外观。你知道吗

关于如何修复这个打印,以便其他程序用户不必学习如何查找和替换所有这些字符,有什么建议或指针吗?你知道吗

编辑:最终输出如下:

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

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

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

下一个牢房在哪里

我想要:

aaa | stuff | eggs | spam

bbb | stuff | eggs | spam

ccc | stuff | spam

打印目录的示例如下:

[('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 upstream a1', 'Rhesus mef2c upstream a1', 'MouseLemur mef2d upstream a1', 'BrownBat mef2d upstream a1', 'Dolphin mef2d upstream a1', 'Kung-Fu-Panda! mef2d upstream a1', 'Armadillo mef2d upstream a1', 'chimp mef2d upstream a1', 'Chimp mef2a upstream a1', 'Marmoset mef2d upstream a1', 'Rabbit mef2d upstream a1', 'EuroShrew mef2d upstream a1', 'Alpaca mef2d upstream a1', 'chimp mef2c upstream a1', 'EuroHedgeHog mef2d upstream a1', 'Dog mef2d upstream a1', 'mouse mef2d upstream a1', 'Gibbon mef2d upstream a1', 'Rat mef2d upstream a1', 'Gorilla mef2d upstream a1', 'Orangutan mef2d upstream a1', 'human mef2d upstream a1'])), ('aaataa', set(['mouse mef2c upstream a1', 'Alpaca mef2a upstream a1', 'horse mef2a upstream a1', 'opossum mef2a upstream a1', 'Gibbon mef2a upstream a1', 'MouseLemur mef2a upstream a1', 'elephant mef2a upstream a1', 'GuineaPig mef2a upstream a1', 'Rat mef2d upstream a1', 'Dolphin mef2a upstream a1', 'Gorilla mef2a upstream a1', 'Rhesus mef2c upstream a1', 'mouse mef2a upstream a1', 'dog mef2c upstream a1', 'Human mef2a upstream a1', 'Chimp mef2a upstream a1', 'Orangutan mef2a upstream a1']))]

请注意,这里有两个项目及其关联集。实际的dictlist中有500-40000个条目,所以这只是一个小部分


Tags: 文件a1spamitemeggs括号setupstream
3条回答

看起来您有一个元组列表,其中每个元组由一个字符串和一个集合组成。因此,要正确使用CSV writer,需要每个元组都是“扁平的”:

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,您可以执行以下操作

>>> 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'

然后可以将字符串写入文件。你知道吗

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

>>> 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模块将数据写入文件

根据OPs的注释,他希望将集合放在不同的行中,这里有一个更新

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

您可以使用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)

相关问题 更多 >

    热门问题