1

ニュースをチャネルに従って整理しようとしています。つまり、list_a(下記)の要素を使用してtxtファイルに名前を付けてから、同じチャネルの対応する文字列を同じドキュメントに書き込む必要があります。これらのtxtファイルは私の現在のフォールドに書き込むことができます。これについて面倒なことはありません。

私の現在の関心事は、それを効率的に書く方法です。ドキュメントに書き込まれる文字列の数がわからないため、文字列が使い果たされて新しいドキュメントが開始されるまで、現在のドキュメントを保持する必要があります。

次に例を示します。

入力:2つの文字列リスト:

list_a=['abc','abc','fox','abc',....]

list_b=['campus shooting', 'Congress sucks', 'debt ceiling','1% rich', ...]

出力:タイトルがそれぞれ「abc.txt」と「fox.txt」の2つのドキュメント

ドキュメントabc.txt内

campus shooting

congress sucks

ドキュメントfox.txt内

debt ceiling
4

3 に答える 3

2

ここで使用zip()して、追加モードでファイルを開くことができます('a'):

In [44]: list_a=['abc','abc','fox','abc']
In [45]: list_b=['campus shooting', 'Congress sucks', 'debt ceiling','1% rich']

In [46]: for x,y in zip(list_a,list_b):
   ....:     with open(x+".txt" , "a") as f:
   ....:         f.write(y+'\n')
于 2013-01-10T20:44:41.140 に答える
1

ファイルを1回だけ開く別の方法:

from collections import defaultdict

list_a = ['abc', 'abc', 'fox', 'abc']
list_b = ['campus shooting', 'Congress sucks', 'debt ceiling','1% rich']

results = defaultdict(list)

for title, text in zip(list_a, list_b):
    results[title].append(text)

for title, result in results.iteritems():
    with open("%s.txt" % title , "w") as f:
        f.write('\n'.join(result))
于 2013-01-10T20:49:37.260 に答える
1

各アイテムのファイルを開くにはコストがかかる可能性があります(推測しないでください。パフォーマンスを、それを回避するこのバージョンと比較してください)。

from itertools import groupby
from operator import itemgetter

L = sorted(zip(list_a, list_b), key=itemgetter(0)) # sorted (a, b) pairs
for name, group in groupby(L, key=itemgetter(0)):
    with open(name + ".txt", "w") as file:
        for a, b in group:
            file.write(b + "\n")
于 2013-01-10T20:55:27.570 に答える