我有5个班,
即:
earn
acq
money
fx
crude
我有一个大约20000个文件的列表, 我有一个文件“topics.txt”,形式如下:
earn~6~7~4
grain~9~1~2~12
money~4~29
等等.. 其中数字对应于文件名,而单词对应于类。
我需要打印属于我之前提到的类别的所有文件,即; “赚钱”,“收购”,“钱”,“外汇”和“原油”
输出: (挣-6.txt,7.txt,4.txt)
(ACQ-5.txt)
依旧......
我可以在“topics.txt”中打印所有可用的类,但我想只打印5个特定的类。
import collections
import sys
sys.stdout=open('dicti1.txt','w')
with open('topics.txt') as f:
d = collections.defaultdict(list)
for line in f:
value, *keys = line.strip().split('~')
for key in filter(None, keys):
d[key].append(value+".txt")
for i in d.items():
print(i)
答案 0 :(得分:0)
除非我误解了这个问题,否则你正在努力工作。另外,我建议不要覆盖sys.stdout
。
尝试这样的事情:
interesting_types = ['earn', 'acq', 'money', 'fx', 'crude']
with open("in.txt") as in_file, open('out.txt', 'w') as out_file:
for l in in_file:
if l:
type, *filenames = l.strip().split("~")
if type in interesting_types:
out_file.write("({}-{})\n".format(type, ",".join(["{}.txt".format(x) for x in filenames])))