- 2024.07.15 更新,pandas中使用正则表达式匹配电话号码
一、在正则匹配*中运到的坑,需要加入.
#小案例
import re
name='规格45*45'
print(re.findall('45.*45',name))
二、电话号码获取
情况一:(\d{13}|\d{11}|\d{8}) 和情况二:(\d{8}|\d{11}|\d{13}) 是不同的,符合顺序是从左到右的。
如果用情况二:出现13位电话号码只能匹配到8位电话号码。
pattern = r'(改(\d{13}|\d{11}|\d{8})|以后不要)' # 添加括号来创建捕获组
这种匹配方式,结果是匹配出groups组。
我这边的需求是满足【判断是否匹配了数字,如果是,则使用数字列;否则使用 ‘以后不要’】。
import pandas as pd
# 文件读取
df=pd.read_csv('****.csv')
# 使用 str.extract 提取数据
matches = df['备注'].astype(str).str.extract(pattern)
# 判断是否匹配了数字,如果是,则使用数字列;否则使用 '以后不要'
df['电话号码更改'] = matches[1].where(matches[1].notnull(), matches[0])