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