>>> import re
>>> s = 'Limits paramA : (7, 45) paramB : (0, 0) paramC : (1, 23)'
>>> [int(n) for n in re.findall(r'\d+', s)]
[7, 45, 0, 0, 1, 23]
如果您只想查找括号内的数字(本例中的结果相同):
>>> [int(n) for m in re.findall(r'\(([\d, ]+)\)', s) for n in m.split(',')]
[7, 45, 0, 0, 1, 23]
下面是这个差异可能很重要的一个例子:
>>> s = 'Limits param1 : (7, 45) param2 : (0, 0) param3 : (1, 23)'
>>> [int(n) for n in re.findall(r'\d+', s)]
[1, 7, 45, 2, 0, 0, 3, 1, 23]
>>> [int(n) for m in re.findall(r'\(([\d, ]+)\)', s) for n in m.split(',')]
[7, 45, 0, 0, 1, 23]
>>> import re
>>> import ast
>>> nums = [num for tup in [ast.literal_eval(tup) for tup in re.findall('\([^)]*\)', s)] for num in tup]
[7, 45, 0, 0, 1, 23]
使用
regex
:如果只需要字符串中的所有数字:
如果您只想查找括号内的数字(本例中的结果相同):
下面是这个差异可能很重要的一个例子:
注意,第一个方法还匹配来自
param1
的1
和来自param2
的2
,等等只提取括号内的数字。你知道吗
相关问题 更多 >
编程相关推荐