Python正则表达式:排除含PT的字符串并修正匹配结果
正则修正与姓名提取方案
核心处理逻辑
- 先过滤所有包含
PT的字符串片段,避免机构名称干扰 - 去除姓名前多余的前缀
A - 精准匹配提取中文个人姓名
正则实现示例
假设拼接后的文本格式类似 A张三 PT科技公司 项目经理;A李四 PT咨询所 分析师;王五 工作室 设计师,可按以下方式处理:
import re # 示例拼接文本 target_text = "A张三 PT科技公司 项目经理;A李四 PT咨询所 分析师;王五 工作室 设计师" # 1. 拆分分句并过滤含PT的条目 valid_clauses = [clause.strip() for clause in target_text.split(';') if 'PT' not in clause] # 2. 提取姓名,去除前缀A extracted_names = [re.sub(r'^A', '', re.search(r'^[A]?([\u4e00-\u9fa5]+)', clause).group(1)) for clause in valid_clauses] print(extracted_names) # 输出: ['张三', '王五']
正则规则说明
^[A]?([\u4e00-\u9fa5]+):匹配以可选前缀A开头的中文姓名,捕获组仅保留姓名主体部分- 通过列表推导式提前过滤含
PT的分句,从根源避免机构名称被误识别为姓名
Pandas集成处理方案
直接针对DataFrame的字符串列批量处理:
import pandas as pd import re # 示例DataFrame df = pd.DataFrame({'combined_info': [ "A张三 PT科技公司 项目经理", "A李四 PT咨询所 分析师", "王五 工作室 设计师" ]}) def get_valid_name(info_str): if 'PT' in info_str: return None name_match = re.search(r'^[A]?([\u4e00-\u9fa5]+)', info_str) return name_match.group(1) if name_match else None # 生成姓名列 df['real_name'] = df['combined_info'].apply(get_valid_name)
内容的提问来源于stack exchange,提问作者htm_01
相关产品推荐
相关产品推荐

