python - 在 pandas 中使用正则表达式验证字符串

标签 python regex string pandas dataframe

我需要一些帮助。

我对 Python 还很陌生(我使用与 Anaconda 捆绑在一起的版本 3.0),并且我想使用正则表达式来验证/返回仅包含与条件匹配的有效数字的列表(例如\d{11} 表示 11 位数字) 。我正在使用 Pandas 获取列表

df = pd.DataFrame(columns=['phoneNumber','count'], data=[
    ['08034303939',11],
    ['08034382919',11],
    ['0802329292',10],
    ['09039292921',11]])

当我使用

退回所有商品时
for row in df.iterrows(): # dataframe.iterrows() returns tuple
    print(row[1][0])

它返回所有没有正则表达式验证的项目,但是当我尝试用它进行验证时

for row in df.iterrows(): # dataframe.iterrows() returns tuple
    print(re.compile(r"\d{11}").search(row[1][0]).group())

它返回一个属性错误(因为不匹配值的返回值为 None。

我该如何解决这个问题,或者有更简单的方法吗?

最佳答案

如果要验证,可以使用str.match并使用 df.astype(bool) 转换为 bool 掩码:

x = df['phoneNumber'].str.match(r'\d{11}').astype(bool)
x

0     True
1     True
2    False
3     True
Name: phoneNumber, dtype: bool

您可以使用 bool 索引仅返回包含有效电话号码的行。

df[x]

   phoneNumber  count
0  08034303939     11
1  08034382919     11
3  09039292921     11

关于python - 在 pandas 中使用正则表达式验证字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45174613/

相关文章:

python - 使用 Psycopg2 保持 Python 和 Postgresql 之间持续连接的最佳/最佳实践

python - 在 Python 中使用 2D 掩码从 (x,y) 字段高效选择元素

python - 如何从字符串中提取所有类似数字的值?

regex - Regexp::Grammars 中不区分大小写的哈希键

java - 从递归方法中删除输入

c++ - 如何比较 utf8 字符串,例如 C++ 中的波斯语单词?

python - Xarray(来自 grib 文件)到数据集

regex - 在逗号上拆分字符串,忽略逗号、方括号、括号中的大括号、引号

php - 包含子字符串的字符串的正则表达式 包含子字符串

javascript检查并替换两个字符串