首页 > 解决方案 > 提取方括号中的整数

问题描述

我正在尝试使用 Python 中的正则表达式从字符串中提取整数。因此,数字和括号之间可以有空格,但除了构成整数的字符之外没有其他字符。我的代码如下所示:


import re
s = "  afd [asd] [12 ] [a34]  [ -43 ]tt [+12]xxx"
print(re.findall(r"\s+\[\w+\]\s\[(\d+)\s\]\s\[\w+\]\s+\[\s(-\d+)\s\]\w+\s\[\+(\d+)\]\w+",s))

上面的代码打印:


[('12', '-43', '12')]

但是,我希望输出不是元组的形式,或者在上述情况下是三元组的形式,而是在列表中,如:


[12, -43, 12]

标签: pythonregexpython-3.xstringlist

解决方案


您可以使用以下方法执行此操作:

import re
s = "  afd [asd] [12 ] [a34]  [ -43 ]tt [+12]xxx"
rv = re.findall(r"\s+\[\w+\]\s\[(\d+)\s\]\s\[\w+\]\s+\[\s(-\d+)\s\]\w+\s\[\+(\d+)\]\w+",s)
lst = [int(x) for t in rv for x in t]

这将遍历所有元组rv并将每个整数添加到一个新列表中lst。这种情况下的输出是:

>>> lst
[12, -43, 12]

推荐阅读