gpt4 book ai didi

python - 从 3 个文本文件输出匹配行以及匹配行下的行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:47 26 4
gpt4 key购买 nike

我有一个关于公共(public)数据的问题。我有三个文本文件,其中包含以下格式的数据:

    cli= 111
mon= 45

cli= 584
mon= 21

cli= 23
mon= 417

现在我有以下程序,当我执行它时,它会为我提供所有匹配的 CLI。换句话说,它为我提供了出现在 3 个文本文件中的 CLI。

    with open ('/home/user/Desktop/text1.txt', 'r') as file1:
with open ('/home/user/Desktop/text2.txt', 'r') as file2:
with open ('/home/user/Desktop/text3.txt', 'r') as file3:
same = set(file1).intersection(file2).intersection(file3)
same.discard('\n')

with open ('/home/user/Desktop/common.txt', 'w') as file_out:
for line in same:
file_out.write(line)

我的问题是,我可以同时输出值 (MON= 45) 和 CLI= 111 吗?假设 CLI= 111 存在于所有 3 个文本文件中。我想要这样的结果:

    cli= 111
mon= 45
mon= 98
mon= 32

提前致谢。PS:以上示例数据仅为 1 个文本文件。假设有 3 个文本文件。谢谢!

最佳答案

看来您正在丢弃要稍后访问的数据。无需再次解析文件,您需要以某种方式捕获该数据,这样您就不会再次查看文件。一种方法(假设每个“cli”每个文件只有一个对应的“mon”)是使用字典。

我创建了一个函数,它根据提供的文件构建字典,其中键是“cli”数据,值是 mon 数据。从那里,您可以从字典键构建一个 Set() 并以这种方式找到交集。从交叉点,您知道返回值必须是字典中的键,所以只需将它们连接到一个“out”字符串并将其写入您的 out 文件:)

    def buildDict(f):
dic = {}
for i in range(0,len(f)):
if "cli" in f[i]:
dic[f[i]] = f[i+1]
return dic

with open ('1.txt', 'r') as file1:
f1_dic = buildDict(file1.readlines())
with open ('2.txt', 'r') as file2:
f2_dic = buildDict(file2.readlines())
with open ('3.txt', 'r') as file3:
f3_dic = buildDict(file3.readlines())
same = set(f1_dic.keys()).intersection(f2_dic.keys()).intersection(f3_dic.keys())

out = ''
for i in same:
out += i
out += f1_dic[i]
out += f2_dic[i]
out += f3_dic[i]


with open ('common.txt', 'w') as file_out:
file_out.write(out)

关于python - 从 3 个文本文件输出匹配行以及匹配行下的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37148539/

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