gpt4 book ai didi

python - 在Python中访问条件迭代

转载 作者:行者123 更新时间:2023-12-01 04:51:33 24 4
gpt4 key购买 nike

我正在解析大量巨大的 XML 文件(高达 1GB),并且交叉引用给定字段的大约 700 个可能匹配项的列表。如果我找到匹配项,我想知道我从列表中命中了哪个匹配项,而不是使用字段本身的文本。

我的代码中有以下行

<-- outside loops iterating over outer layer tags tags -->
if any(re.search(s, parsedOutTag.text) for s in preCompiledRegexList):
<-- checking innner layer tags for additional content-->

我想知道如何访问迭代器 s条件满足时直接。我目前对我需要发生的事情有一个非常黑客的实现。

我必须承认,而且我确信这是显而易见的,我采用这条线是为了提高 Stack Overflow 上另一个问题的效率,所以我并不真正了解所有细节。

最佳答案

我相信 any 函数会短路,因此即使您可以从生成器表达式访问 s 绑定(bind),它也只会是第一个匹配的实例。如果这就是您想要的,那么您只需解开 if 条件即可:

for s in preCompiledRegexList:
if re.search(s, parsedOutTag.text):
# checking inner layer tags for additional content
break

如果您想要处理 preCompiledRegexList 中匹配的所有项目,请删除上面的 break,或者使用仅生成与所需条件匹配的值的生成器:

for outer_s in (inner_s for inner_s in preCompiledRegexList of re.search(s, parsedOutTag.text):
# checking inner layer tags for additional content

(请注意,没有必要使用不同的 outer_sinner_s 标签,我只是想强调它们存在于不同的范围中。)

关于python - 在Python中访问条件迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28335249/

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