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

Pandas查询匹配完整单词时出现Syntax Error问题求助

修复Pandas完整单词查询的语法错误并实现需求

问题分析

原代码通过str.contains实现子串匹配,但无法限定完整单词;修改代码时因字符串格式化、正则表达式写法及符号配对错误,触发SyntaxError。

错误根源

修改后的代码存在多处语法问题:

  • 正则表达式r'\b{v}\b'未正确嵌入f-string,转义字符处理错误
  • 引号、括号配对混乱,导致Python解析器无法识别正确的代码结构

修复后的代码

dfs = []
for row in mapping_excel.to_dict(orient='records'):
    query_filter = ' & '.join([f"{k}.str.contains(r'\\b{v}\\b', case=False, na=False)" for k, v in row.items() if v and k != 'exclusion_criteria'])
    df = final.query(query_filter, engine='python')
    df['exclusion_criteria'] = row['exclusion_criteria']
    dfs.append(df)
exc_df = pd.concat(dfs)

核心修改说明

  • 正则表达式正确嵌入:在f-string中使用r'\\b{v}\\b',双反斜杠确保\b(单词边界)被正则引擎正确识别,实现完整单词匹配
  • 符号配对修正:调整引号和括号的嵌套,保证str.contains的参数格式合法,避免语法解析错误
  • 保留原有逻辑:维持多条件&拼接、空值过滤等原有逻辑,仅修改匹配规则

特殊场景处理

若匹配值v包含正则特殊字符(如.、*、?),需先转义避免正则解析异常,代码调整如下:

import re

dfs = []
for row in mapping_excel.to_dict(orient='records'):
    query_filter = ' & '.join([f"{k}.str.contains(r'\\b{re.escape(v)}\\b', case=False, na=False)" for k, v in row.items() if v and k != 'exclusion_criteria'])
    df = final.query(query_filter, engine='python')
    df['exclusion_criteria'] = row['exclusion_criteria']
    dfs.append(df)
exc_df = pd.concat(dfs)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:03:26