2

我想拆分一个包含数字和公制单位的字符串。我试过这个:

foo = "10mm"
match = re.match(r"([0-9]+)([a-z]+)", foo, re.I)

num = match.group(1)
unit = match.group(2)

它适用于整数,但如果数字包含逗号则无效。为此我需要改变什么?

4

2 回答 2

2

如果你想允许10or10,0但不允许,,,, ,123or 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)
于 2013-04-16T10:22:32.187 回答
1
>>> re.split('[a-z]+', foo, flags=re.IGNORECASE)
['10', '']

>>> re.split('[0-9]+', foo, flags=re.IGNORECASE)
['', 'mm']
于 2013-04-16T10:24:09.170 回答