Python解析字符串中paranethes中的整数

2024-09-29 06:32:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python将一个简单的字符串解析为-

Limits paramA : (7, 45) paramB : (0, 0) paramC : (1, 23)

我想从不同的整数中提取7,45,0,0,1,23。 有人能告诉我怎么提取这个吗?你知道吗

论坛上有很多字符串解析问题,但我找不到最适合我的答案。你知道吗

谢谢你。你知道吗


Tags: 字符串答案整数论坛limitsparamaparambparamc
3条回答

使用regex

In [71]: import re

In [72]: strs="Limits paramA : (7, 45) paramB : (0, 0) paramC : (1, 23)"

In [74]: [int(digit) for digit in re.findall(r'\d+',strs)]
Out[74]: [7, 45, 0, 0, 1, 23]

如果只需要字符串中的所有数字:

>>> 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]

注意,第一个方法还匹配来自param11和来自param22,等等

>>> 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]

只提取括号内的数字。你知道吗

相关问题 更多 >