【问题标题】:Python Regular Expression: re.sub to replace matchesPython 正则表达式:re.sub 替换匹配项
【发布时间】:2022-11-29 20:42:02
【问题描述】:

我正在尝试使用 python 正则表达式分析收益电话。 我想删除不必要的行,这些行只包含下一个发言者的姓名和职位。

这是我要分析的文本的摘录:

“问题与解答\n操作员 [1]\n\n Shannon Siemsen Cross,Cross Research LLC - 联合创始人、负责人兼分析师 [2]\n 我希望每个人都好。蒂姆,你谈到在第二个阶段看到一些改进四月半。所以我想知道你是否可以在细分市场和地理基础上多谈谈你在销售的各个地区看到的情况以及你从客户那里听到的情况。然后我有一个跟进。\n Timothy D. Cook,Apple Inc. - 首席执行官兼董事 [3]\n ..."

在我要删除的每一行的末尾,你有 [some number]。

所以我使用以下代码行来获取这些行:

name_lines = re.findall('.*[\d]]', text)

这有效并给了我以下列表: ['运算符 [1]', ' Shannon Siemsen Cross,Cross Research LLC - 联合创始人、负责人兼分析师 [2]', ' Timothy D. Cook, Apple Inc. - 首席执行官兼董事 [3]']

所以,现在在下一步中,我想使用以下代码行替换文本中的这个字符串:

for i in range(0,len(name_lines)): 
    text = re.sub(name_lines[i], '', text)

但这不起作用。另外,如果我只是尝试替换 1 而不是使用循环,它也不起作用,但我不知道为什么。

此外,如果我现在尝试使用 re.findall 并搜索我从第一行代码中获得的行,我也找不到匹配项。

【问题讨论】:

    标签: python regex python-re


    【解决方案1】:

    re.sub 的第一个参数被视为正则表达式,因此方括号具有特殊含义并且不匹配字面意思。

    你根本不需要这个替换的正则表达式(而且你也不需要循环计数器i):

    for name_line in name_lines:
        text = text.replace(name_line, '')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 2014-05-12
      • 2022-08-10
      • 2016-11-04
      • 1970-01-01
      相关资源
      最近更新 更多