2

私は使用しています

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 | もの| 卵| スパム

bbb | もの| 卵| スパム

ccc | もの| スパム

印刷dictlistの例は次のようになります。

[('gcagag'、set(['FlyingFox mef2d アップストリームa1'、'ギボンmef2aアップストリームa1'、'エレファントmef2dアップストリームa1'、'ゴリラmef2cアップストリームa1'、'ギボンmef2cアップストリームa1'、'モンキーmef2dアップストリームa1' 、'ゴリラmef2aアップストリームa1'、'Rhesus mef2cアップストリームa1'、'マウスレムールmef2dアップストリームa1'、'ブラウンバットmef2dアップストリームa1'、'ドルフィンmef2dアップストリームa1'、'カンフーパンダ!mef2dアップストリームa1'、'アルマディロmef2dアップストリームa1'、'チンパンジーmef2dアップストリームa1'、'チンパンジーmef2aアップストリームa1'、'マーモセットmef2dアップストリームa1'、'ウサギmef2dアップストリームa1'、'ユーロシュリューmef2dアップストリームa1'、'アルパカmef2dアップストリームa1'、'チンパンジーmef2cアップストリームa1'、' EuroHedgeHog mef2dアップストリームa1'、'犬mef2d上流a1'、'マウスmef2d上流a1'、'ギボンmef2d上流a1'、'ラットmef2d上流a1'、'ゴリラmef2d上流a1'、'オランウータンmef2d上流a1'、'人間mef2d上流a1'])) 、('aaataa'、set(['マウスmef2cアップストリームa1'、'アルパカmef2aアップストリームa1'、'ホースmef2aアップストリームa1'、'オポッサムmef2aアップストリームa1'、'ギボンmef2aアップストリームa1'、'マウスレムールmef2aアップストリームa1' 、'エレファントmef2aアップストリームa1'、'GuineaPig mef2aアップストリームa1'、'ラットmef2dアップストリームa1'、'ドルフィンmef2aアップストリームa1'、'ゴリラmef2aアップストリームa1'、'レサスmef2cアップストリームa1'、'マウスmef2aアップストリームa1'、 '犬mef2c上流a1'、'人間mef2a上流a1'、 'チンパンジーmef2a上流a1'、'オランウータンmef2a上流a1']))]

ここには2つのアイテムとそれに関連するセットがあることに注意してください。実際のdictlistには、500〜40000のアイテムが含まれているため、これはほんの小さなカットです。

4

3 に答える 3

2

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)
于 2012-04-05T20:03:44.467 に答える
2

タプルのリストがあり、各タプルは文字列とセットで構成されているようです。したがって、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)
于 2012-04-05T21:13:16.033 に答える
0

番号のリストを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モジュールを使用してデータをファイルに書き込むこともできます

異なる行のセットが欲しかったので、OPのコメントから、ここに更新があります

>>> fin=open('somecsv.csv', 'wb')
>>> csvwriter = csv.writer(open('somecsv.csv', 'wb'), delimiter=',')
>>> for s in somelist:
    csvwriter.writerow(list(s))
>>> fin.close()
于 2012-04-05T20:08:47.890 に答える