解析字符串中的数字

时间:2017-04-23 08:45:00

标签: python regex

我有一个字符串如下

text1: 123 wwer 123 text2: 456 oirn 456

我想在text1之后解析数字。我犯了一些错误,我无法追查。

import re
if re.search("text1",string):
    re.findall("\d+",st)
>>> if re.search("text1",st):
re.findall("\d+",st)
['1', '123', '123', '2', '456', '456']

但我的意图是单独解析123。我在做什么错误

text1的输出应为[123,123],text2的输出应为[456,456]

3 个答案:

答案 0 :(得分:2)

我会把它分成两部分。

1)将整个字符串拆分为text\d出现的部分。 2)遍历列表,找到所有数字。

>>> import re
>>> st = 'text1: 123 wwer 123 text2: 456 oirn 456'
>>> lst = re.split(r'(text\d)',st)[1:]
>>> {i:re.findall(r'\d+',j) for i,j in zip(lst, lst[1:])[::2]}
{'text2': ['456', '456'], 'text1': ['123', '123']}

答案 1 :(得分:0)

您可以使用此正则表达式:(text\d+):[^\d]+(\d+)[^\d]+(\d+)

Demo

答案 2 :(得分:0)

简短解决方案:

text = 'text1: 123 wwer 123 text2: 456 oirn 456'
result = [list(i) for i in re.findall(r'text\d+: (\d+) \w+ (\d+)', text)]
print(result)

输出(连续对):

[['123', '123'], ['456', '456']]