使用Python自动从字符串列表生成文档标题

时间:2013-01-10 20:40:16

标签: python list title

我正在尝试根据频道组织新闻,即我需要使用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

3 个答案:

答案 0 :(得分: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')

答案 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))

答案 2 :(得分: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")