Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从字符串中筛选正整数和负整数_Python_Regex_Python 3.x_Math_List Comprehension - Fatal编程技术网

Python:从字符串中筛选正整数和负整数

Python:从字符串中筛选正整数和负整数,python,regex,python-3.x,math,list-comprehension,Python,Regex,Python 3.x,Math,List Comprehension,Python 3: 给定一个字符串(一个等式),返回一个正整数和负整数的列表。 我尝试过各种正则表达式和列表理解解决方案,但都没有效果 给出等式4+3x或-5+2y或-7y-2x 返回值:[4,3]、-5,2]、-7、-2] 输入 输出 my_list = [-7, -2] 这个正则表达式应该可以解决您的问题 [\+\-]?[0-9]+ 另外,这里有一些代码 import re regex = re.compile(r'[\+\-]?[0-9]+') nums = [int(k) for k

Python 3: 给定一个字符串(一个等式),返回一个正整数和负整数的列表。 我尝试过各种正则表达式和列表理解解决方案,但都没有效果

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

输入

输出

my_list = [-7, -2]

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

[\+\-]?[0-9]+
另外,这里有一些代码

import re
regex = re.compile(r'[\+\-]?[0-9]+')
nums = [int(k) for k in regex.findall('5-21x')]
使用函数的简单解决方案:

import re

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

print(result)
输出:

[-5, 2]

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

原始字符串表示法(
r“text”
)使正则表达式保持正常。 没有它,正则表达式中的每个反斜杠(“
\
”)都会 加上另一个前缀以转义它


这里有更完整的答案,但保留了字母表

ss='5 a 2b-13 c2 d2e 111 5.2.3 1.4x 2223'

删除整数和负数(即使在字符串开头)

ss1=re.sub(r“(^ |\s)-?(\d+)\。(\d*)(\s)”,“,ss)

>“a 2b c2 d2f 5.2.3 1.4x 2223”。

删除十进制数

ss2=re.sub((^ | |\d+)\(\d+),“”,ss1)

>“a 2b c2 d2e 1.4x 2223”。

用删除句子末尾的数字

ss3=re.sub(“[0-9+]”?(\d+)(\”,“”,ss2)

>“a 2b c2 d2e 1.4x”

删除字符串末尾的数字

ss4=re.sub(“[0-9+]”?(\d+)($)”,“”,ss3)


>“a2b c2 d2e 1.4x”

请提供您最新尝试的详细信息,并参考您的代码解释您遇到的问题。我不明白为什么这个问题会遭到如此多的反对票。是的,OP没有展示他的努力,但是,至少,他展示了输入和预期输出,任务非常简单。这是可行的。我早些时候尝试了re.split(),并且使用了更长的正则表达式。So-是可选的,数字不是。“r”代表什么?@JamesGoldstein,原始字符串表示法(r“text”)使正则表达式保持正常。如果没有它,正则表达式中的每个反斜杠('\')都必须加上另一个反斜杠才能转义。类似
“-3-21”
的字符串返回
[-3,-21]
。如何获得
[-3,-2,1]
?@MoteZart,在您的简单输入示例中-删除符号
+
[-5, 2]