从第一个数字字符开始在Python中拆分字符串

时间:2015-03-11 21:58:16

标签: python regex

我需要以这种方式管理Python中的字符串:

我有这样的字符串'> =',' =','< =','< ','>'在他们面前,例如:

'>=1_2_3'
'<2_3_2'

我想要实现的是分别分别获取字符串:

'>=', '1_2_3' 
'<', '2_3_2'

基本上我需要从第一个数字字符开始拆分它们。

有一种方法可以使用正则表达式实现此结果,而无需迭代字符串检查字符是数字还是&#39; _&#39;?

谢谢。

4 个答案:

答案 0 :(得分:1)

import re

strings = ['>=1_2_3','<2_3_2']

for s in strings:
    mat = re.match(r'([^\d]*)(\d.*)', s)
    print mat.groups()

输出:

('>=', '1_2_3')
('<', '2_3_2')

这只是将所有内容分组,直到一个组中的第一个数字,然后是第一个数字和一秒之后的所有内容。

您可以使用mat.group(1)mat.group(2)

访问各个群组

答案 1 :(得分:1)

这样做:

re.split(r'(^[^\d]+)', string)[1:]

示例:

>>> re.split(r'(^[^\d]+)', '>=1_2_3')[1:]
['>=', '1_2_3']

>>> re.split(r'(^[^\d]+)', '<2_3_2')[1:]
['<', '2_3_2']

答案 2 :(得分:0)

您可以使用此正则表达式进行拆分:

(?<=[<>=])(?=\d)

RegEx Demo

答案 3 :(得分:0)

可能有更好的方法,但你可以用捕获分割,然后加入后两个元素:

values = re.split(r'(\d)', '>=1_2_3', maxsplit = 1)
values = [values[0], values[1] + values[2]]