我试图找出如何将正则表达式合并到python if语句中。我有一个pandas数据框,我在迭代行,并希望每次行具有特定的文本组合时执行操作。正则表达式应匹配以大写字母开头,后跟6个数字的任何7个字符串(即R142389)
for index, row in df1.iterrows():
if row[4] == REGEX HERE:
Perform Action
我是以正确的方式来做这件事的吗?任何帮助将不胜感激!
答案 0 :(得分:2)
是的,你可以这样做,只需使用match
,它只会在与它进行比较的字符串的开头匹配。您必须使用search
来搜索整个字符串。
关于正则表达式的一些解释:
^
在字符串
[A-Z]
A-Z A(索引65)和Z(索引90)之间范围内的单个字符(区分大小写)
\d{6}
匹配一个数字(等于[0-9]
)
{6}
量词 - 恰好匹配6次
$
在字符串末尾断言位置,或者在字符串末尾的行终止符之前断言
import re
regex = re.compile('^[A-Z]\d{6}$')
possibles = ['R142389', 'hello', 'J123456']
for line in possibles:
if regex.match(line):
print(line)
输出:
R142389
J123456
答案 1 :(得分:0)
我会使用re
模块
import re
re.search(pattern, string, flags=0)
其中pattern
是要匹配的正则表达式,string
是要搜索的字符串,flags
是可选修饰符。当没有匹配时,此函数返回None
。
以下是re
文档:
https://docs.python.org/2/library/re.html
这是一个实施示例:https://www.tutorialspoint.com/python/python_reg_expressions.htm