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

如何避免函数读取转义字符?为何字符串正常但函数调用报错?

问题描述

我有一个存储目录路径的字符串列表,示例如下:

'directory path'
'c:\windows\g\subfolder1'
'c:\windows\g\subfolder2'
'etc'

该字符串本身有效,打印时显示正常:

print(dir_list[0])
dir_list[0]

# 输出结果
c:\windows\g\subfolder
Out[1]: 'c:\\windows\\g\\subfolder1'

但将其用于pandas的str.contains()函数时出现错误:

df['directory path'].str.contains(dir_list[0])

错误提示:

error: bad escape \g at position 10

请问为何字符串本身正常,但在函数中使用会报错?如何避免函数读取转义字符?


原因与解决方案

原因

pandas.Series.str.contains()默认将传入的字符串视为正则表达式解析。在正则语法中,\g属于非法的转义序列(合法的\g<数字>用于反向引用分组),但你的路径里的\g只是路径分隔后的普通字符组合,并非正则语法,因此触发转义错误。

而直接打印字符串时,Python仅会将字符串内的\\解析为实际的单个反斜杠\,不会进行正则语法校验,所以显示正常。

解决方案

有两种可靠的处理方式:

  1. 禁用正则匹配模式
    给str.contains()添加regex=False参数,强制函数将传入内容当作普通文本处理,不再解析正则语法:

    df['directory path'].str.contains(dir_list[0], regex=False)
    
  2. 转义正则特殊字符
    如果需要保留正则匹配能力,可以使用re.escape()对路径字符串中的正则特殊字符进行转义,让它们被当作普通字符处理:

    import re
    df['directory path'].str.contains(re.escape(dir_list[0]))
    

内容的提问来源于stack exchange,提问作者Joakim Torsvik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:08:31