1

我正在尝试根据频道组织新闻,即我需要使用list_a(如下)中的元素来命名我的txt文件,然后将同一频道的相应字符串写入同一文档。这些 txt 文件可以写入我当前的文件夹,对此没有任何麻烦

我目前关心的是如何有效地编写它。由于我不知道文档中会写入多少个字符串,因此当前文档需要保留,直到字符串用完并启动新文档。

下面是一个例子:

输入:2 个字符串列表:

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

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

输出:2个文档,标题分别为“abc.txt”和“fox.txt”

在文档 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

为每个项目打开一个文件可能会很昂贵(不要猜测,将性能与避免它的此版本进行比较):

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 回答
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 回答