首页 > 解决方案 > 如何在列表末尾的特定字符之前将字符插入列表,在最后一个字符之后插入相同的字符?

问题描述

我有一个简单计算器的生成列表。例如,它看起来像这样:

l = [1,5, +, 2, 7, *, 3, 5, - , 9, 5, +, 4,5,6]

在输入行中,它看起来像这样“15 + 27 * 35 - 95 + 456”。

我需要做的是实现一个函数,使最后一个条目为负数并在括号中(-456)(不是最后一个数字6,而是列表末尾非数字字符之后的所有数字)

所以我有一个清单

list = [1,5, +, 2, 7, *, 3, 5, -, 9, 5, +, 4, 5, 6]

我需要在末尾的“+”之后插入括号,然后是“-”,然后是 4、5、6,然后再插入括号。所以我的新列表应该是这样的:

list2 = [1, 5, +, 2, 7, *, 3, 5, - , 9, 5, +, (,-,4,5,6,)] 

基本上我需要从末尾找到非数字字符,插入两个字符“(”,“-”,然后在最后一个数字后添加“)”。

我怎样才能做到这一点?

然后我将应用这个函数 ''.join(map(str,list)) 它看起来像这样 "15 + 27 * 35 - 95 + (-456)"

我尝试使用正则表达式,但似乎我失败了:-(

谢谢

标签: python

解决方案


使用正则表达式:

formula = "15 + 27 * 35 - 95 + 456"
new_formula = re.sub(r"(\d+)$", r"(-\1)", formula)

推荐阅读