【问题标题】:Pandas DataFrame extract between one START word and multiple STOP wordsPandas DataFrame 在一个起始词和多个停止词之间提取
【发布时间】:2021-07-17 06:07:02
【问题描述】:

我想编写一个正则表达式以使用 str.extract 从 Pandas DataFrame 中提取模式,该模式提取在 START 词和两个可能的 STOP 词之一之间找到的模式的第一个匹配项。

示例#1:开始你好,停止词

示例# 2:START 早上好另一个分隔符

在第一种情况下,我想返回 'hello there' ,在第二种情况下,我想返回 'Good morning'

如果末尾只有一个停用词,如示例 1,则 str.extract 中的以下正则表达式有效。但是如何组合两个停止词呢?

r'(?s)START(.*?)STOP\s+WORD'

【问题讨论】:

  • 你试过什么?将其包含在问题中

标签: python pandas python-re


【解决方案1】:

使用以下正则表达式替换:

\bSTART\s+(.*?)\s+(?:STOP WORD|ANOTHER DELIMITER)\b

熊猫代码:

df["match"] = df["col"].str.extract(r'\bSTART\s+(.*?)\s+(?:STOP WORD|ANOTHER DELIMITER)\b')

【讨论】:

  • 谢谢。这就说得通了。如果停止词之一是三个换行符'\n\n\n'怎么办?所以我试图提取的文本可以有换行符。所以我在一开始就强制执行 dotall (?s) 。但停用词之一是三个换行符 df["match"] = df["col"].str.extract(r'(?s)\bSTART\s+(.*?)\s+(?:STOP WORD |\n\n\n)\b')
  • 在这种情况下,使用:(?s)\bSTART\s+(.*?)\s+(?:STOP WORD\b|\n\n\n)
  • 有没有办法在多个开始词和结束词之间进行提取?
  • @asd 你的评论让我觉得太长/太不同了,无法在这里跟进。也许在一个新问题中提出这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2021-07-10
  • 2018-12-31
  • 1970-01-01
相关资源
最近更新 更多