我该如何在这样的字符串中获取负数('(((-1,-5,-1),(3,1,-3),(4,-1))') 我已经尝试切片,并得到了“-”和“ 5”而不是-5
答案 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+
),该数字可能前面带有减号(-?
)。