如何在Python中将表达式字符串拆分为列表?

2024-04-16 06:25:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,我正在尝试创建一种计算器,将表达式作为字符串读取并计算它们(不带eval)。为了做到这一点,我在将字符串转换为一个由括号、运算符和值分隔的列表之后使用一个列表。 我也有一个包含操作符的列表,我只是不知道如何在regex拆分中使用它,所以直到现在我都是手动完成的。你知道吗

我的代码有3个问题:

  1. 代码不能正确分割负数。你知道吗
  2. 代码不允许添加操作符(在示例中-如果我想在将来添加_作为新操作符,代码将不知道如何根据它进行拆分)。你知道吗
  3. 代码将数字作为字符串返回,然后在外部函数中将其转换为整数。你知道吗
    # Removing any unwanted white spaces, tabs, or new lines from the equation string:
    equation = re.sub(r"[\n\t\s]*", "", equation)
    # Creating a list based on the equation string:
    result_list = re.split(r'([-+*/^~%!@$&()])|\s+', equation)
    # Filtering the list - Removing all the unwanted "spaces" from the list:
    result_list = [value for value in result_list if value not in ['', ' ', '\t']]

例如:5--5->;我想获取:[5, '-', -5]->;我当前获取:['5', '-', '-', '5']

另一个例子:((500-4)*-3)->;我想得到:['(', '(', 500, '-', '4', ')', *', '-3', ')']


Tags: the字符串代码fromgtre列表string