Python 从文本中分割数字

Python 从文本中分割数字,python,string,split,ironpython,Python,String,Split,Ironpython,我想拆分一个包含数字和公制单位的字符串。我试过这个: foo = "10mm" match = re.match(r"([0-9]+)([a-z]+)", foo, re.I) num = match.group(1) unit = match.group(2) 它适用于整数,但如果数字包含逗号则不适用。我必须为此更改什么?如果您希望允许10或10,0但不允许、、、、、123或123、,则可以使用 match = re.match(r"([0-9]+(?:,[0-9]+)?)([a-z]+)

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

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

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

它适用于整数,但如果数字包含逗号则不适用。我必须为此更改什么?

如果您希望允许
10
10,0
但不允许
、、、
、123
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)

你是说千位分隔符逗号,还是十进制逗号?十进制逗号,比如10.12,这是句点,不是逗号。区别是至关重要的,因为点是正则表达式元字符。@Yui:Define“works”。您认为匹配的
10&0mm
是正确的吗?点匹配任何字符,除非转义。
>>> re.split('[a-z]+', foo, flags=re.IGNORECASE)
['10', '']

>>> re.split('[0-9]+', foo, flags=re.IGNORECASE)
['', 'mm']