gpt4 book ai didi

python - 将变量传递给正则表达式提取 Pandas

转载 作者:行者123 更新时间:2023-12-04 07:44:09 26 4
gpt4 key购买 nike

我试图通过使用另一列中的值作为变量来使用 Pandas 进行正则表达式提取。df = pd.DataFrame({'text': ["The final is one of the most famous snooker matches of all time and pa", "Davis trailed for the first time at the event in the quarter-finals, as he played Terry Griffiths. "],'key': ["snooker", 'quarter-finals']})我正在考虑构建一个字符串作为参数并将其传递给函数 reg = '((?:\S+\s+){0,10}\b'+'snooker'+'\b\s*(?:\S+\b\s*){0,10})'df['text'].str.extract(r'reg')但它会产生这个错误
ValueError:模式不包含捕获组
我假设这是由于 "(r'reg')" 的语法造成的

最佳答案

这里有几个问题:

  • 字边界设置为文字 \b (r"\b"), 不带退格字符 ( "\b" ),
  • 您不能将变量放入常规的普通字符串文字中,您需要使用 format()或 f 弦
  • 您还需要模式中的捕获组。

  • 您可以使用
    df['result'] = df['text'].str.extract(fr'((?:\S+\s+){{0,10}}\b{keyword_var}\b(?:\s+\S+){{0,10}})')
    笔记:
  • fr'...' - 定义具有可变插值支持的原始 f 字符串文字并将反斜杠解析为文字字符
  • ((?:\S+\s+){{0,10}}\b{keyword_var}\b(?:\s+\S+){{0,10}}) - 一个包含单个捕获组的模式包裹整个模式,该组值将是返回值。
  • 如果您的 keyword不是纯字母数字字符串,您需要重新考虑 using word boundaries并且必须转义内容,例如{re.escape(keyword_var)}
  • 关于python - 将变量传递给正则表达式提取 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67287762/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com