gpt4 book ai didi

python - 正则表达式每次运行都会给出不同的结果

转载 作者:太空宇宙 更新时间:2023-11-04 05:59:21 25 4
gpt4 key购买 nike

我有以下代码作为我正在处理的 css 预处理器的一部分。此部分采用用户定义的变量并将它们插入到代码中。正则表达式仅在被空格、大括号、方括号、逗号、引号或运算符包围时才替换。当我运行它时,我只会每隔一段时间替换一次变量。

def insert_vars(ccss, variables):
for var in variables.keys():
replacer = re.compile(r"""(?P<before>[,+\[(\b{:"'])\$""" + var + """(?P<after>[\b}:"'\])+,])""")
ccss = replacer.sub(r"\g<before>" + variables[var] + r"\g<after>", ccss)

del replacer
re.purge()

return ccss.replace(r"\$", "$")

当我运行它时

insert_vars("hello $animal, $nounification != {$noun}ification.", {"animal": "python", "noun": "car"})

50% 的时间返回

hello $animal, $nounification != {car}ification.

另外50%

hello $animal, $nounification != {$noun}ification.

有人知道为什么吗?

最佳答案

发生的事情是您的 return 关键字是循环的一部分,如 acjr stated in the comments .

这意味着循环只会运行一次迭代。

.keys() 的顺序未定义,'animal''noun' 都可以排在第一位。

一半情况下,您的代码会先获取 'noun',这会正常工作,或者会先获取 'animal',但不会有任何效果。

因此,您应该将 return 的缩进减少到循环之外。

关于python - 正则表达式每次运行都会给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25959548/

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