【发布时间】:2019-10-16 14:49:29
【问题描述】:
我在创建一个函数时遇到问题,该函数接受一个包含长度值的字符串(例如:'32.0 mm / 1.259"`)并仅返回 mm 中的值。
我当前的函数parse 只能处理只有 mm 值的字符串,但不能处理 mm 和 inches值存在。
非常感谢任何帮助!
正则表达式模式: re.sub("[^0-9.\-]", "", str)
import re
def parse(str):
if not str:
return None
str = str.lower()
return float(re.sub("[^0-9.\-]", "", str))
tests = ['12.3 mm', '12.3mm', '32.0 mm / 1.259"', '32.0mm / 1.259"']
for s in tests:
print( parse(s) )
预期输出
12.3
12.3
32.0
32.0
实际输出
12.3
12.3
ValueError: could not convert string to float: '32.01.259'
【问题讨论】:
-
能否请您看一下答案并选择最适合您的答案?有一些解决方案,例如 1) 删除所有以
mm开头的数字,2) 在mm之前提取数字。 My solution 与Daniel's 非常相似,但在5. mmorph的情况下不提取数字。因为我使用的是单词边界,所以我的解决方案也适用于mm之前的整数。
标签: python regex python-3.x