一日一技:在 Python 正则表达式模块中逃跑(escape)

简介: 一日一技:在 Python 正则表达式模块中逃跑(escape)

摄影:产品经理时间:从九溪十八涧出来后的小雨天

在编程语言中,有常见的符号被赋予了特殊的意义,例如小数点.,在正则表达式里面表示任意一个非换行符的字符;小于号<在 html 中表示标签。

但有时候,我们只想让这些符号表示它本来的意思,不想让它的特殊意义表露出来,应该怎么办?

我们知道,在正则表达式中可以使用反斜杠来让一个特殊符号变成普通符号,例如\.表示普通的小数点,\$表示普通的美元符号。

现在我有一个列表keywords_list,里面是100个字符串,我想判断是否有任意一个字符串在某个给定的句子中。如果用 for 循环一个一个去检查,效率非常低。于是可以考虑使用正则表达式:

import re
pattern = re.compile('|'.join(keywords_list))
if pattern.search('目标句子'):
    print('目标句子中包含某个关键词')

但假设 keywords_list列表中有如下的字符串:

keywords_list = ['4.5', '+{d', '***']

那么我们使用正则表达式就会导致报错,如下图所示。

这是因为这些字符串里面存在特殊的符号,这些符号在正则表达式里面有特殊的意义,有使用的规范,不能随意使用。

但是,keywords_list里面有各种各样的特殊符号,难道要一个一个取出来,逐一x.replace('+', '\+').replace('.', '\.').replace('*', '\*')...?

当然不用,Python 的正则表达式模块已经帮你想好了解决办法,使用re.escape就能自动处理所有的特殊符号了!

它的用法如下:

>>> import re
>>> keywords_list = ['4.5', '+{d', '***']
>>> pattern_str = '|'.join(keywords_list)
>>> safe_pattern_str = re.escape(pattern_str)
>>> print(safe_pattern_str)
4\.5\|\+\{d\|\*\*\*
>>> re.compile(safe_pattern_str)
re.compile('4\\.5\\|\\+\\{d\\|\\*\\*\\*')
>>>

运行效果如下图所示:

解决问题。

目录
相关文章
|
26天前
|
存储 开发者 Python
Python中的collections模块与UserDict:用户自定义字典详解
【4月更文挑战第2天】在Python中,`collections.UserDict`是用于创建自定义字典行为的基类,它提供了一个可扩展的接口。通过继承`UserDict`,可以轻松添加或修改字典功能,如在`__init__`和`__setitem__`等方法中插入自定义逻辑。使用`UserDict`有助于保持代码可读性和可维护性,而不是直接继承内置的`dict`。例如,可以创建一个`LoggingDict`类,在设置键值对时记录操作。这样,开发者可以根据具体需求定制字典行为,同时保持对字典内部管理的抽象。
|
27天前
|
存储 缓存 算法
Python中collections模块的deque双端队列:深入解析与应用
在Python的`collections`模块中,`deque`(双端队列)是一个线程安全、快速添加和删除元素的双端队列数据类型。它支持从队列的两端添加和弹出元素,提供了比列表更高的效率,特别是在处理大型数据集时。本文将详细解析`deque`的原理、使用方法以及它在各种场景中的应用。
|
1天前
|
人工智能 安全 Java
Python 多线程编程实战:threading 模块的最佳实践
Python 多线程编程实战:threading 模块的最佳实践
12 5
|
1天前
|
人工智能 数据库 开发者
Python中的atexit模块:优雅地处理程序退出
Python中的atexit模块:优雅地处理程序退出
8 3
|
4天前
|
开发者 Python
Python的os模块详解
Python的os模块详解
15 0
|
8天前
|
数据挖掘 API 数据安全/隐私保护
python请求模块requests如何添加代理ip
python请求模块requests如何添加代理ip
|
9天前
|
测试技术 Python
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
|
9天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
40 1
|
11天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
55 0
|
12天前
|
Python
python学习14-模块与包
python学习14-模块与包