首页 > 解决方案 > 为什么我在 Python 的循环中面临正则表达式检测问题

问题描述

我在使用正则表达式时遇到了非常奇怪的问题。

weight='abcd'
description='ml'
for symbol in Syntax['symbol']:
            print(symbol)
            weight=re.findall(symbol,description)
print(weight)
output --> []

语法是一个包含不同单位的数据框,还包含符号列内的“ml”,我手动打印了它打印所需单位的符号变量,即“ml”,它将在循环中设置为模式,但它仍然返回 [] 或使用 re.match() 时没有。但是当我尝试下面的代码时

description='ml'
pattern='ml'
print(re.findall(pattern,description)

它打印“ml”,为什么?上述代码和 Top 代码在逻辑上是相同的。

在此处输入图像描述

标签: regexpython-3.x

解决方案


在顶部代码中,您只打印最终正则表达式搜索的结果,因为print(weight)它在您的循环之外。如果“ml”在您的数据框中的某个位置,这一切都很好,但是如果 的最后一个值与中的symbol任何内容都不匹配description,则正则表达式将找不到任何匹配项,您也不会得到任何输出。

尝试weightfor循环内打印,看看你得到什么输出。


推荐阅读