如何用更Pythonic的方法从MODBUS变量名字符串中提取指定数字?
优化后的Pythonic实现
直接用单条正则捕获目标数字,省略多次字符串分割的冗余逻辑,代码如下:
import re # 嵌套在CSV遍历循环中的代码 match_obj = re.search(r"_ST(\d+)\.WORD_type", variable) if match_obj: var_type = "string" var_length = int(match_obj.group(1)) / 2
优化点说明
- 仅做一次正则匹配即可完成判断+数值提取,不需要多次split生成多余临时变量,逻辑更清晰
- 正则中的
(\d+)会自动捕获任意位数的数字,不受原有1-2位长度限制,兼容性更强 - 直接用匹配对象的布尔值做判断,符合Python的真值判断习惯
如果你的场景中需要严格限制数字位数,可以把正则中的\d+替换为\d{1,2}即可,功能和原有实现完全一致。
内容的提问来源于stack exchange,提问作者lifedroid
相关产品推荐
相关产品推荐

