我有一个字符串如下
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]
答案 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+)
答案 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']]