You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:35:19