Python:从字符串中筛选正整数和负整数
Python 3: 给定一个字符串(一个等式),返回一个正整数和负整数的列表。 我尝试过各种正则表达式和列表理解解决方案,但都没有效果 给出等式4+3x或-5+2y或-7y-2x 返回值:[4,3]、-5,2]、-7、-2] 输入 输出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
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]