You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则匹配Pandas Series中可变数字前缀的重量单位字符串?

提取Pandas Series中的产品重量字符串

问题背景

现有如下Pandas Series产品名称数据:

import pandas as pd
s = pd.Series({0: 'Açúcar Refinado UNIÃO Pacote 1kg',
 1: 'Açúcar Refinado QUALITÁ Pacote 1Kg',
 2: 'Açúcar Refinado DA BARRA Pacote 1kg',
 3: 'Açúcar Refinado CARAVELAS Pacote 1kg',
 4: 'Açúcar Refinado GUARANI Pacote 1Kg',
 5: 'Açúcar Refinado Granulado Doçúcar UNIÃO Pacote 1kg',
 6: 'Açúcar Refinado Light UNIÃO Fit Pacote 500g',
 7: 'Açúcar Refinado Granulado Premium UNIÃO Pacote 1kg',
 8: 'Açúcar Refinado UNIÃO 1kg - Pacote com 10 Unidades',
 9: 'Açúcar Refinado Granulado em Cubos UNIÃO Pote 250g',
 10: 'Açúcar Refinado Granulado Premium Caravelas Pacote 1kg',
 11: 'Acucar Refinado Uniao 1kg'})

需要提取其中代表产品重量的字符串(如1kg、500g),此前尝试的正则表达式无法适配重量前数字位数不固定的情况:

import re
s.str.extract(r"(.kg)|(.g)", flags = re.IGNORECASE)

解决方案

使用以下正则表达式即可匹配任意位数数字+重量单位的组合,同时支持大小写忽略:

s.str.extract(r"(\d+[kK]?[gG])", flags=re.IGNORECASE)

正则表达式说明

  • \d+:匹配1个或多个数字,解决数字位数不固定的问题
  • [kK]?:可选匹配字母k/K,兼容kg和g两种单位格式
  • [gG]:匹配字母g/G,覆盖大小写不同的单位写法
  • 外层括号()用于捕获需要提取的目标内容

执行结果

运行上述代码后,将得到包含所有重量字符串的Series:

0      1kg
1      1Kg
2      1kg
3      1kg
4      1Kg
5      1kg
6     500g
7      1kg
8      1kg
9     250g
10     1kg
11     1kg
dtype: object

内容的提问来源于stack exchange,提问作者INGl0R1AM0R1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:22:07