我想拆分一个包含数字和公制单位的字符串。我试过这个:
foo = "10mm"
match = re.match(r"([0-9]+)([a-z]+)", foo, re.I)
num = match.group(1)
unit = match.group(2)
它适用于整数,但如果数字包含逗号则无效。为此我需要改变什么?
我想拆分一个包含数字和公制单位的字符串。我试过这个:
foo = "10mm"
match = re.match(r"([0-9]+)([a-z]+)", foo, re.I)
num = match.group(1)
unit = match.group(2)
它适用于整数,但如果数字包含逗号则无效。为此我需要改变什么?
如果你想允许10
or10,0
但不允许,,,
, ,123
or 123,
,那么你可以使用
match = re.match(r"([0-9]+(?:,[0-9]+)?)([a-z]+)", foo, re.I)
如果您实际上是指点/句点 ( 10.0
),那么您需要记住将其转义:
match = re.match(r"([0-9]+(?:\.[0-9]+)?)([a-z]+)", foo, re.I)
>>> re.split('[a-z]+', foo, flags=re.IGNORECASE)
['10', '']
>>> re.split('[0-9]+', foo, flags=re.IGNORECASE)
['', 'mm']