Python:从字符串中过滤正整数和负整数

Jam*_*ein -1 python regex math list-comprehension python-3.x

Python 3:给定一个字符串(一个等式),返回一个正整数和负整数的列表.我尝试了各种正则表达式和列表理解解决方案无济于事.

给定等式4 + 3x或-5 + 2y或-7y-2x返回:[4,3],[ - 5,2],[ - 7,-2]

输入

str = '-7y-2x'
Run Code Online (Sandbox Code Playgroud)

产量

my_list = [-7, -2]
Run Code Online (Sandbox Code Playgroud)

Rom*_*est 7

使用re.findall函数的简单解决方案:

import re

s = '-5+2y'
result = [int(d) for d in re.findall(r'-?\d+', s)]

print(result)
Run Code Online (Sandbox Code Playgroud)

输出:

[-5, 2]
Run Code Online (Sandbox Code Playgroud)

-?\d+- 匹配正整数和负整数

原始字符串表示法(r"text")保持正则表达式理智.没有它,\正则表达式中的每个反斜杠(' ')都必须以另一个为前缀以逃避它


Kri*_*ati 5

这个正则表达式可以解决您的问题。

[\+\-]?[0-9]+
Run Code Online (Sandbox Code Playgroud)

另外,这是一些附带的代码。

import re
regex = re.compile(r'[\+\-]?[0-9]+')
nums = [int(k) for k in regex.findall('5-21x')]
Run Code Online (Sandbox Code Playgroud)