【问题标题】:Python Use Regex Sub Multiple Times in 1 PassPython在1遍中多次使用Regex Sub
【发布时间】:2012-10-21 13:11:29
【问题描述】:

有没有办法将多个正则表达式组合成一个语句,这样它就可以一次执行不同的子语句?

no_Punct = re.sub('(\w)([?:!.,;-]+)(\s)',r'\1 ',raw)
no_Punct = re.sub('(\s)([-]+)(\s)',r'\1',no_Punct)

输入字符串是“原始”。我试图去掉单词末尾的某些标点符号,并删除每边被空格包围的连字符。我可以将这两者合并到一个语句中吗?

鉴于以下输入: 这是一句话!四分之一等于 0.25。

输出是: 这是一个四分之一等于 .25 的句子

【问题讨论】:

  • 你能展示一些示例输入和预期输出吗?
  • 添加了示例输入/输出。

标签: python regex


【解决方案1】:

简单地说,只需将一个替换为另一个:

no_Punct = re.sub('(\s)([-]+)(\s)', r'\1', re.sub('(\w)([?:!.,;-]+)(\s)', r'\1 ', raw))

虽然这也可能有效:

no_Punct = re.sub('(?<=\w)[?:!.,;-]+(?=\s)|(?<=\s)-+\s', '', raw)

【讨论】:

  • 你贴的第一个方法,那不是还是要通过两次吗?一次通过以消除单词/句子末尾的所有标点符号,然后将该输出馈送到下一个子句中。这看起来仍然像 2 穿过整个字符串。对吗?
猜你喜欢
  • 1970-01-01
  • 2014-04-28
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多