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

如何用Python正则按'y '或'y)'拆分并重组((PERS))标签内容

处理((PERS))标签内的人名拆分需求

需求说明

需要对((PERS))标签内的内容进行拆分:

  • 当标签内存在“y ”或“y)”时,将“y”或“y ”移出标签
  • 剩余内容分别放入独立的((PERS))标签中

尝试的代码

import re

# 示例1
input_text = "((PERS) Marcos Sy y) ((PERS) Lucy) estuvieron ((VERB) jugando) sdds"
# 示例2
# input_text = "ashsahghgsa ((PERS) María y Rosa ds) son alumnas de esa escuela y juegan juntas"

input_text = re.sub(
                    r"\(\(PERS\)" + r"((?:\w\s*)+(?:\sy\s(?:\w\s*)+)+)(?=\s*y\s*(?:\)|\())",
                    lambda m: (f"((PERS)){m[1].replace(' y', ') y ((PERS)')}"),
                    input_text, re.IGNORECASE)

print(input_text)

期望输出

# 示例1输出
"((PERS) Marcos Sy) y ((PERS) Lucy) estuvieron ((VERB) jugando) sdds"

# 示例2输出
"ashsahghgsa ((PERS) María) y ((PERS) Rosa ds) son alumnas de esa escuela y juegan juntas"

解决方案

通过两个正则替换步骤覆盖两种场景:

import re

def split_pers_tags(text):
    # 处理标签内用y分隔的人名(如 ((PERS) A y B) → ((PERS) A) y ((PERS) B))
    text = re.sub(r'\(\(PERS\)\s*(.*?)\s*y\s*(.*?)\s*\)', 
                  r'((PERS) \1) y ((PERS) \2)', 
                  text, 
                  flags=re.IGNORECASE)
    # 处理标签末尾带y,后续紧跟另一个((PERS))标签的情况(如 ((PERS) A y) ((PERS) B) → ((PERS) A) y ((PERS) B))
    text = re.sub(r'\(\(PERS\)\s*(.*?)\s*y\s*\)\s*\(\(PERS\)\s*(.*?)\s*\)', 
                  r'((PERS) \1) y ((PERS) \2)', 
                  text, 
                  flags=re.IGNORECASE)
    return text

# 测试示例1
input1 = "((PERS) Marcos Sy y) ((PERS) Lucy) estuvieron ((VERB) jugando) sdds"
print(split_pers_tags(input1))

# 测试示例2
input2 = "ashsahghgsa ((PERS) María y Rosa ds) son alumnas de esa escuela y juegan juntas"
print(split_pers_tags(input2))

运行结果

((PERS) Marcos Sy) y ((PERS) Lucy) estuvieron ((VERB) jugando) sdds
ashsahghgsa ((PERS) María) y ((PERS) Rosa ds) son alumnas de esa escuela y juegan juntas

正则说明

  1. 第一个正则:匹配((PERS) 内容1 y 内容2 )的结构,将其替换为((PERS) 内容1) y ((PERS) 内容2)
  2. 第二个正则:匹配((PERS) 内容 y ) ((PERS) 内容2 )的结构,将其替换为((PERS) 内容) y ((PERS) 内容2)

内容的提问来源于stack exchange,提问作者Matt095

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:30:37