Python - 使用正则表达式将数字和字母拆分为子字符串

Jac*_*cob 0 python regex split

我正在创建一个公制测量转换器.期望用户输入诸如125km(数字后跟单位缩写)的表达式.对于转换,必须从缩写中拆分数值,从而产生诸如的结果[125, 'km'].我用正则表达式完成了这个re.split,但它在结果列表中产生了不需要的项:

import re
s = '125km'
print(re.split('(\d+)', s))
Run Code Online (Sandbox Code Playgroud)

输出:

['', '125', 'km']
Run Code Online (Sandbox Code Playgroud)

我不需要也不想要开始''.如何简单地将字符串的数字部分与字母部分分开以使用正则表达式生成列表?

Avi*_*Raj 6

怎么了re.findall

>>> s = '125km'
>>> re.findall(r'[A-Za-z]+|\d+', s)
['125', 'km']
Run Code Online (Sandbox Code Playgroud)

[A-Za-z]+匹配一个或多个字母.|\d+一个或多个数字.

要么

使用列表理解.

>>> [i for i in re.split(r'([A-Za-z]+)', s) if i]
['125', 'km']
>>> [i for i in re.split(r'(\d+)', s) if i]
['125', 'km']
Run Code Online (Sandbox Code Playgroud)