如何用Python正则表达式从字符串中提取油耗和CO2排放相关数据
正确实现代码
你之前的正则规则没有对齐油耗、CO₂排放的固定格式特征,所以无法匹配到结果,以下是可直接运行的实现:
import re # 适配两种格式的正则规则 # 分组1匹配油耗:逗号分隔的小数 + 任意空格 + l/100km # 分组2匹配CO₂排放:整数 + 任意空格 + g + 任意空格 + CO₂/km(兼容CO2写法) extract_pattern = re.compile( r'(\d+,\d+\s*l/100km).*?(\d+\s*g\s*CO[₂2]/km)', flags=re.DOTALL ) # 测试你的两个单元格示例 cell_list = [ "17.160 km, 80 kW (109 PS)Limousine, Autogas (LPG), Automatik, HU Neu, 2/3 Türenca. 5,0 l/100km (komb.), ca. 116 g CO₂/km (komb.)", "EZ 10/2018, 12.900 km, 80 kW (109 PS)Limousine, Unfallfrei, Hybrid (Benzin/Elektro), Halbautomatik, HU Neu, ca. 5,9 l/100km (komb.), ca. 134 g CO₂/km (komb.)" ] for cell in cell_list: match_res = extract_pattern.search(cell) if match_res: fuel, co2 = match_res.groups() # 按你的需求把CO₂下标替换为普通2 co2 = co2.replace("₂", "2") # 输出结果,也可以按需求存入列表/表格 print(f"油耗:{fuel},CO₂排放:{co2}")
运行输出
油耗:5,0 l/100km,CO₂排放:116 g CO2/km 油耗:5,9 l/100km,CO₂排放:134 g CO2/km
可选单独匹配规则
如果你的单元格可能只存在油耗或排放其中一种,可以用两个正则分开匹配:
- 匹配油耗:
r'\d+,\d+\s*l/100km' - 匹配CO₂排放:
r'\d+\s*g\s*CO[₂2]/km'
内容的提问来源于stack exchange,提问作者Georg Klippenstein
相关产品推荐
相关产品推荐

