我有15个.txt列表,我希望按类别进行合并,并在新列中将每个列表的描述分开。不幸的是,并不是每个列表中都存在所有类别,因此说明需要与正确的类别相对应。
例如,如果我的两个列表看起来像:
List 1:
1 a
4 b
5 c
2 d
List 2:
3 a
6 c
7 f
2 g
我正在寻找一个输出,例如(但最终要合并15个文件):
a 1 3
b 4
c 5 6
d 2
f 7
g 2
有人提供脚本建议来帮助实现这一目标吗?谢谢!
PYTHON解决方案:
我想您的文件以这种方式包含数据:
1 a
4 b
5 c
2 d
这是我的示例代码,我将解释发生了什么。
files = ['test1.txt', 'test2.txt']
category_dict = dict()
for _file in files:
with open(_file, 'r') as fhl:
for line in fhl:
key, val = line.split()
if key in category_dict:
category_dict[key].append(val)
else:
category_dict[key] = [val]
print(category_dict)
打印结果:
{'1': ['a'], '4': ['b'], '5': ['c'], '2': ['d', 'g'], '3': ['a'], '6': ['c'], '7': ['f']}
首先,我要创建一个简单列表,列出要读取的所有文件。请注意,您可以os.walk(在线检查)以从目录中获取您想要的所有文件,或者您可以在此列表中添加失败(完全拍拍)。
files = ['test1.txt', 'test2.txt']
然后我们创建一个字典对象,以您想要的方式存储我们的数据:
category_dict = dict()
然后我们遍历文件列表,打开每个文件,然后逐行读取它:
for _file in files:
with open(_file, 'r') as fhl:
for line in fhl:
这里是有趣的部分。如果文件的格式与上面显示的格式不完全相同,则可能会以您想要的方式获取并出错或读取数据。检查文件,并根据需要调整'split()'部分。
此外,我们拆分(在线检查),基本上将字符串拆分为单词列表。
key, val = line.split()
请注意,如果它们之间没有空格,则可能需要调整上面的行。
之后,我们检查'key'是否出现在'category_dict'中,如果没有,我们创建它,然后使其等于从文件中获取的值的列表。如果键已经存在,则意味着我们已经为该“键”分配了一个或多个值的列表。然后,我们只需追加新值。
这样,您将拥有一个“类别”,并分别保留每个“键”值。