首页 > 解决方案 > 如果在 Python 中匹配字符串(REGEX)中的条件

问题描述

我只想在正则表达式匹配之前添加一个 if 条件:首先我定义正则表达式并将值存储在 Name 中,然后打印 Name 值。结果是真假(布尔值)。

Name = df['Name'].str.match('^(\w+\s*)$')
#If the result matches True value passed and else the value will be False
print(Name) 

结果

:
True
False
True

下面的代码是关于我的 if 条件。我不知道如何将 if 条件与正则表达式匹配。似乎没有在 if 条件中检查 Name 的值为 True/False。

if Name is True:
     print(Name)
else:
     print('bye')

代码结果:

bye

预期结果:

John
Saher

谢谢

标签: pythonpython-3.xregexpandasdataframe

解决方案


您可以使用

df.loc[df['Name'].str.match(r'^\w+\s*$')]

请注意,您不需要将正则表达式作为参数传递给的捕获组Series.str.match,它仅在extract/中是必需的extractall

如果您想允许任何数量的前导空白字符,您还可以添加\s*after^和 use r'^\s*\w+\s*$'

熊猫测试:

import pandas as pd
df = pd.DataFrame({'Name': ['John', '---', 'Saher']})
>>> df.loc[df['Name'].str.match('^(\w+\s*)$')]
    Name
0   John
2  Saher

推荐阅读