提取字符串中的负数

时间:2018-12-01 14:58:14

标签: python

我该如何在这样的字符串中获取负数('(((-1,-5,-1),(3,1,-3),(4,-1))')  我已经尝试切片,并得到了“-”和“ 5”而不是-5

1 个答案:

答案 0 :(得分:1)

如果该字符串是有效的Python元组,则可以使用ast.literal_eval

import ast

ts = '((-1,-5,-1),(3,1,-3),(4,-1))'
ts = ast.literal_eval(ts)

numbers = [e for t in ts for e in t]
print(numbers)

输出

[-1, -5, -1, 3, 1, -3, 4, -1]

或者,您可以通过内置的re模块使用正则表达式:

import re

numbers = re.compile('-?\d+')
ts = '((-1,-5,-1),(3,1,-3),(4,-1))'
result = list(map(int, numbers.findall(ts)))
print(result)

输出

[-1, -5, -1, 3, 1, -3, 4, -1]

模式-?\d+表示匹配一组数字(\d+),该数字可能前面带有减号(-?)。