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

解决含右括号的目标词在DataFrame句子中匹配索引的正则报错问题

正则匹配含特殊字符目标词的起始索引问题

示例数据

import pandas as pd
df = pd.DataFrame({
    'sentence': {
        0: 'idontlike)anap:ple.dislike)',
        1: 'welcomet)omyroom.plzcomein',
        2: 'thisis)thetable'
    },
    'target': {
        0: 'like)',
        1: 'come',
        2: 'is)'
    }
})

问题描述

需要提取每一行sentence中target词的精确起始索引(允许重复匹配),比如第一行的like)在句子里出现两次,对应索引应为5和20。但使用以下代码时,因部分target包含右括号(正则表达式的特殊元字符),会抛出error: unbalanced parenthesis at position 4错误:

df.apply(lambda x: [m.start() for m in re.finditer(x.target, x.sentence)], axis=1)

要求:禁止用split拆分句子,必须保留句子无空格状态,同时保留target中的右括号。

解决方案

右括号是正则的特殊语法字符,直接匹配会被解析成正则规则而非字面字符。只需用re.escape()对target进行转义,将所有正则特殊字符转换为字面量即可:

import re
df['start_indices'] = df.apply(lambda x: [m.start() for m in re.finditer(re.escape(x.target), x.sentence)], axis=1)

验证结果

运行后df['start_indices']的输出符合预期:

  • 第一行:[5, 20]
  • 第二行:[18]
  • 第三行:[4]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:14:57