gpt4 book ai didi

python - 两个文件的文本处理

转载 作者:太空狗 更新时间:2023-10-30 01:03:13 25 4
gpt4 key购买 nike

我有两个格式如下的文本文件:

每一行的第一个是:

Key1:Value1

第二个是这样的:

Key2:Value2

有没有一种方法可以将 file1 中的 Value1 替换为 Value2 并将其用作 file2< 中的键?

例如:

文件1:

foo:hello
bar:world

文件2:

hello:adam
bar:eve

我想得到:

foo:adam
bar:eve

这两个文件不一定在每一行都匹配。这可以用 awk 或其他东西巧妙地完成,还是我应该用 Python 天真地完成?

最佳答案

创建两个字典,每个文件一个。例如:

file1 = {}
for line in open('file1', 'r'):
k, v = line.strip().split(':')
file1[k] = v

或者如果您更喜欢单线:

file1 = dict(l.strip().split(':') for l in open('file1', 'r'))

然后你可以这样做:

result = {}
for key, value in file1.iteritems():
if value in file2:
result[key] = file2[value]

另一种方法是您可以为 file1 反向生成键值对并使用集合。例如,如果您的 file1 包含 foo:bar,则您的 file1 dict 为 {bar: foo}

for key in set(file1) & set(file2):
result[file1[key]] = file2[key]

基本上,您可以使用集合交集快速找到公共(public)元素,因此这些元素保证在 file2 中,您不会浪费时间检查它们是否存在。

编辑:正如@pepr 所指出的,如果顺序对您很重要,您可以将collections.OrderedDict 用于第一种方法。

关于python - 两个文件的文本处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10460088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com