gpt4 book ai didi

Python如何将文件与模板匹配

转载 作者:行者123 更新时间:2023-11-30 23:38:27 25 4
gpt4 key购买 nike

我希望将许多文件与一些常见模板进行匹配,并提取差异。我想要有关执行此操作的最佳方法的建议。例如:

模板A:

<1000 text lines that have to match>
a=?
b=2
c=3
d=?
e=5
f=6
<more text>

模板B:

<1000 different text lines that have to match>
h=20
i=21
j=?
<more text>
k=22
l=?
m=24
<more text>

如果我传入文件C:

<1000 text lines that match A>
a=500
b=2
c=3
d=600
e=5
f=6
<more text>

我想要一种简单的方法来表示它与模板 A 匹配,并提取“a=500”、“d=600”。

我可以将它们与正则表达式匹配,但文件相当大,构建该正则表达式会很痛苦。

我也尝试过 difflib,但解析操作码并提取差异似乎并不是最佳选择。

大家有更好的建议吗?

最佳答案

您可能需要稍微调整一下才能处理附加文本,因为我不知道确切的格式,但这应该不会太困难。

with open('templ.txt') as templ, open('in.txt') as f:
items = [i.strip().split('=')[0] for i in templ if '=?' in i]
d = dict(i.strip().split('=') for i in f)
print [(i,d[i]) for i in items if i in d]

输出:

[('a', '500'), ('d', '600')]  # With template A
[] # With template B

或者如果对齐:

from itertools import imap,compress
with open('templ.txt') as templ, open('in.txt') as f:
print list(imap(str.strip,compress(f,imap(lambda x: '=?' in x,templ))))

输出:

['a=500', 'd=600']

关于Python如何将文件与模板匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14484349/

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