Python不使用split函数提取字符串两字符间内容的实现问题
问题修复与实现方案
首先你原有代码存在两个基础问题:
- 导入re模块时指定了别名
regex,后续调用时却直接使用re,运行会抛出NameError - 正则匹配逻辑错误,当前规则仅能匹配「第一个逗号+空格」到换行符之间的内容,无法匹配到前两个数字
实现代码
你可以使用锚定字符串开头的正则规则匹配前两个数字,不管后续是否存在第三个数字、是否有换行符都可以正常匹配,适合大批量数据处理场景:
import re # 预编译正则,大批量处理时性能更高 pattern = re.compile(r'^(\d+\.\d+, \d+\.\d+)') def extract_first_two_nums(input_str): match_res = pattern.search(input_str) if match_res: return match_res.group(1) # 可根据需求补充匹配失败的默认返回逻辑 return "" # 测试用例1:存在第三个数字 print(extract_first_two_nums('123.49, 19.30, 02\n')) # 输出:123.49, 19.30 # 测试用例2:不存在第三个数字 print(extract_first_two_nums('56.78, 90.12\n')) # 输出:56.78, 90.12
正则说明
^:锚定匹配字符串开头,避免无效回溯,大幅提升匹配效率\d+\.\d+:匹配「任意长度数字+小数点+任意长度数字」格式的浮点数字符串- 括号包裹的部分为捕获组,直接提取即可得到目标结果
内容的提问来源于stack exchange,提问作者SnapDrive
相关产品推荐
相关产品推荐

