re 模块错误 error: bad character range

简介: 下午,看到堆栈的内容。于是上机实验了一番 >>> bds = '10+6/5-4*2' # 数学运算表达式   想用 findall 把运算符号提取出来 >>> import re >>> m = re.

 

下午,看到堆栈的内容。于是上机实验了一番

>>> bds = '10+6/5-4*2' # 数学运算表达式

 

想用 findall 把运算符号提取出来

>>> import re
>>> m = re.findall(r'[+-*/]', bds) # 习惯性地按加减乘除顺序排列:'[+-*/]'

 

可是报错: bad character range

>>> 
... ... 
... ... error: bad character range

错误的字符域?这是什么鬼?会不会跟字符排列顺序有关?

 

好吧,先看看这四个字符的 ascii 码:

>>> print([ord(x) for x in '+-*/'])
 [43, 45, 42, 47]

哦,其中星号 '*' 的码值 42 最小。

 

死马当活马医,把原来的 '+-*/' 按码值调整为 '*+-/' ,看看又如何:

>>> m = re.findall(r'[*+-/]', bds) # 按ASCII码值调整顺序为:'[*+-/]'
>>> m
 ['+', '/', '-', '*']

哇,终于搞定!!

 

总结:

一个猜想:re模块搜查单字符,其字符集合必须按其ASCII值(或者说编码值)由小到大排列,否则报错: error: bad character range

 

目录
相关文章
QT软件开发: QPlainTextEdit当做日志显示窗口
QT软件开发: QPlainTextEdit当做日志显示窗口
1013 0
QT软件开发: QPlainTextEdit当做日志显示窗口
|
Python
DataFrame排序和排名案例解析
本文演示了如何使用pandas对DataFrame进行排序和排名。首先,通过`pd.DataFrame()`将字典转换为DataFrame,然后利用`sort_values()`按'年龄'列进行升序排序。此外,还使用`rank()`方法为'年龄'列生成排名,并将其添加到DataFrame中作为新的'年龄排名'列。
374 0
|
SQL 关系型数据库 MySQL
MySQL - 一文解析 SQL 的执行顺序
MySQL - 一文解析 SQL 的执行顺序
639 0
|
4月前
|
自然语言处理 监控 安全
从原型到生产:LLM评估框架选型的黄金法则
本文系统解析企业级LLM应用评估体系,涵盖多轮对话、RAG、智能体三大场景,对比主流框架适配性,助力构建科学评估流程。建议点赞收藏。
409 1
|
12月前
|
数据采集 网络安全 Python
【Python】怎么解决:urllib.error.HTTPError: HTTP Error 403: Forbidden
解决 `urllib.error.HTTPError: HTTP Error 403: Forbidden`错误需要根据具体情况进行不同的尝试。通过检查URL、模拟浏览器请求、使用代理服务器和Cookies、减慢请求速度、使用随机的User-Agent以及使用更加方便的 `requests`库,可以有效解决此类问题。通过逐步分析和调试,可以找到最合适的解决方案。
819 18
|
JSON 前端开发 API
后端开发中的API设计与文档编写指南####
本文探讨了后端开发中API设计的重要性,并详细阐述了如何编写高效、可维护的API接口。通过实际案例分析,文章强调了清晰的API设计对于前后端分离项目的关键作用,以及良好的文档习惯如何促进团队协作和提升开发效率。 ####
|
编解码 机器人 关系型数据库
掌握计算机自动化:PyAutoGUI库详细教程(最全使用方法,每行代码都有注释,帮你解决与之有关的所有问题)
掌握计算机自动化:PyAutoGUI库详细教程(最全使用方法,每行代码都有注释,帮你解决与之有关的所有问题)
|
边缘计算 自动驾驶 物联网
5G技术的低延迟目标及其对4G的显著改进
5G技术的低延迟目标及其对4G的显著改进
1107 0
|
存储
从源码角度分析Qt元对象系统1
从源码角度分析Qt元对象系统
231 0
|
开发者 索引 Python
Python中调整两列数据顺序的多种方式
Python中调整两列数据顺序的多种方式
1041 0