Excel中提取文本字符串里mm前数字的方法求助
提取绳索宽度数值的解决方案
针对你给出的数据集,所有宽度数值都遵循「数字(整数/带小数点/逗号的小数)+ 大小写MM单位」的格式,用正则表达式可以精准提取,以下是具体实现:
核心正则模式
(\d+([.,]\d+)?)\s*[Mm][Mm]
模式说明:
\d+:匹配1个及以上数字(整数部分)([.,]\d+)?:可选匹配小数部分,支持点或逗号作为分隔符\s*:匹配数值与单位之间的0个或多个空格(兼容10MM「无空格」、13,0 MM「有空格」等格式)[Mm][Mm]:匹配大小写的MM单位(兼容mm/MM)
Python 实现示例
import re # 你的示例数据集 sample_data = [ "STAINLESS ROPE 10MM (7X19) GR316", "SHACKLE D SCREW PIN 20 X22mm 4,75T ISO", "22.0mm MAX-A-LOK INSTANT COUPLING LINK", "FERRULES AFGRIP 13,0MM DIN3093", "SWR 13,0MM 6X19(9/9/1)P 1800MPA DRG RHO" ] # 编译正则(提升重复匹配效率) width_pattern = re.compile(r'(\d+([.,]\d+)?)\s*[Mm][Mm]') # 批量提取并格式化结果 for item in sample_data: match_result = width_pattern.search(item) if match_result: # 统一把逗号分隔的小数转为点格式 width_value = match_result.group(1).replace(',', '.') print(f"{item} → 提取宽度:{width_value} mm")
运行结果
STAINLESS ROPE 10MM (7X19) GR316 → 提取宽度:10 mm SHACKLE D SCREW PIN 20 X22mm 4,75T ISO → 提取宽度:22 mm 22.0mm MAX-A-LOK INSTANT COUPLING LINK → 提取宽度:22.0 mm FERRULES AFGRIP 13,0MM DIN3093 → 提取宽度:13.0 mm SWR 13,0MM 6X19(9/9/1)P 1800MPA DRG RHO → 提取宽度:13.0 mm
注意事项
- 如果数据中出现多个带
MM的数值(比如某条记录同时有10MM和15MM),上述代码会提取第一个匹配到的数值;若需提取所有匹配项,可改用findall方法 - 该正则已覆盖你给出的所有格式变体,若后续出现新格式(比如单位缩写为
M),可调整正则的单位匹配部分为[Mm][Mm]?
内容的提问来源于stack exchange,提问作者MonqPonx
相关产品推荐
相关产品推荐

