我尝试使用正则表达式来查找括号中的所有数字,例如,输入如下:
"PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)"
我想要的是:
[23, 45, 98, 34, 18]
我试过这个:
pattern = re.compile(r"\((\d+)\)")
final = list(pattern.findall("PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)"))
并且它只返回空列表
发布于 2019-04-25 06:33:51
您可以使用正向先行模式:
re.findall(r'\d+(?=[^(]*\))', s)
因此,给定s = "PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)"
,这将返回:
['23', '45', '98', '34', '18']
或者,如果您希望列表项是整数,则可以将它们映射到int
list(map(int, re.findall(r'\d+(?=[^(]*\))', s)))
它返回:
[23, 45, 98, 34, 18]
发布于 2019-04-25 06:16:37
我不知道正则表达式,但您可以不使用它:
string = "PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)"
numbers = []
for s in string.split("(")[1].split(","):
numbers.append(int(s.rstrip(")")))
print(numbers) # [23, 45, 98, 34, 18]
发布于 2019-04-25 06:30:09
您可以执行以下操作:
my_list = list(map(int, re.findall(r'\((.*?)\)', s)[0].split(',')))
收益率:
[23, 45, 98, 34, 18]
https://stackoverflow.com/questions/55839269
复制相似问题