Python 中 str.contains() 处理括号字符串的正确用法

发布时间 - 2026-01-22 00:00:00    点击率:

pandas 的 `str.contains()` 默认启用正则表达式模式,而圆括号 `()` 是正则元字符,直接匹配含括号的字符串会报错或失败;解决方法是禁用正则(`regex=false`)或对特殊字符进行转义。

在使用 Pandas 进行文本筛选与替换时,str.contains() 是一个高频方法。但许多开发者初次遇到包含括号、点号、星号等正则特殊字符的字符串时,会发现匹配“失效”——例如以下代码:

import pandas as pd

df = pd.DataFrame([[

'Table 1 (not in use after 1 Apr 2025)'], ['wefwfe'], ['eqv']], columns=['Venue']) # ❌ 错误:默认 regex=True,( ) 被解释为正则分组,导致语法错误或无匹配 df.loc[df['Venue'].str.contains('Table 1 (not in use after 1 Apr 2025)'), 'Venue'] = 'Table'

运行时可能抛出 re.error: missing ) 等异常,或静默返回空结果——这是因为 str.contains() 默认将输入字符串当作正则表达式解析,而未转义的 ( 和 ) 在正则中需成对出现并具有分组语义。

✅ 正确做法有两种:

方案一:显式关闭正则(推荐用于纯文本匹配)
设置 regex=False,此时字符串按字面量(literal)精确匹配,无需转义:

df.loc[df['Venue'].str.contains('1 (not in use after 1 Apr 2025)', regex=False), 'Venue'] = 'Table'

方案二:使用原始字符串 + 手动转义
若需保留正则能力(如模糊匹配),应对元字符添加反斜杠,并推荐使用原始字符串(r'')避免 Python 字符串转义干扰:

df.loc[df['Venue'].str.contains(r'1 \(not in use after 1 Apr 2025\)', regex=True), 'Venue'] = 'Table'

⚠️ 注意事项:

  • regex=False 性能更优,且语义清晰,只要不需要正则功能,应优先选用
  • 若字符串含多个正则元字符(如 ., *, +, ?, [, ] 等),regex=False 可彻底规避转义复杂性;
  • 避免混用 loc 链式赋值(如 .loc[...].values = ...),应统一使用 df.loc[condition, col] = value 写法,确保操作安全;
  • 对空值(NaN)敏感:str.contains() 默认跳过 NaN,如需控制可传入 na=False(返回 False)或 na=True(返回 True)。

最终输出符合预期:

    Venue
0   Table
1  wefwfe
2     eqv

掌握 regex 参数的含义与取舍,是写出健壮、可维护字符串处理逻辑的关键一步。


# python  # 正则表达式  # ai  # 解决方法 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: iOS发送验证码倒计时应用  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何用PHP工具快速搭建高效网站?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  JavaScript常见的五种数组去重的方式  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  简历没回改:利用AI润色让你的文字更专业  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  iOS中将个别页面强制横屏其他页面竖屏  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  java获取注册ip实例  南京网站制作费用,南京远驱官方网站?  如何快速搭建二级域名独立网站?  如何快速搭建高效可靠的建站解决方案?  如何快速上传建站程序避免常见错误?  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  EditPlus中的正则表达式 实战(4)  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何在云主机上快速搭建网站?  Laravel如何实现模型的全局作用域?(Global Scope示例)  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何在Tomcat中配置并部署网站项目?  如何在阿里云完成域名注册与建站?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  网站建设保证美观性,需要考虑的几点问题!  装修招标网站设计制作流程,装修招标流程?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  JavaScript如何实现继承_有哪些常用方法  JS弹性运动实现方法分析  如何在橙子建站中快速调整背景颜色?  如何快速搭建高效简练网站?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  如何实现javascript表单验证_正则表达式有哪些实用技巧  轻松掌握MySQL函数中的last_insert_id()  网站优化排名时,需要考虑哪些问题呢?  JavaScript Ajax实现异步通信  如何在万网利用已有域名快速建站?  Laravel如何实现数据库事务?(DB Facade示例)