📜  Python|拆分字符串中的运算符(1)

📅  最后修改于: 2023-12-03 14:46:28.543000             🧑  作者: Mango

Python | 拆分字符串中的运算符

有时候我们需要从字符串中提取运算符并对其进行操作,这就需要我们对字符串进行拆分。Python提供了多种方法来拆分字符串中的运算符,下面将介绍其中的几种方法。

方法一:使用正则表达式

使用正则表达式可以方便地匹配字符串中的运算符,并将其提取出来。例如,下面的代码可以提取出字符串中的加号(+)和减号(-):

import re

string = "4 + 5 - 2"
operators = re.findall(r'[+\-*/]', string)

print(operators)    # ['+', '-']

这里使用了正则表达式[+\-*/],表示匹配字符串中的加号、减号、乘号和除号。findall()函数会返回一个包含所有匹配项的列表。

方法二:使用split()函数

Python中有一个很方便的字符串函数split(),可以按指定的字符对字符串进行分割。对于字符串中的运算符,我们可以将其视为分割字符,例如:

string = "4 + 5 - 2"
operators = [char for char in string if char in "+-*/"]

print(operators)    # ['+', '-']

这里使用了一个列表推导式,将字符串中的运算符提取出来并存储在列表中。

方法三:使用字符串方法partition()

partition()方法可以按指定的分割字符将字符串分成三部分,分别是分割字符左边的子串、分割字符本身和分割字符右边的子串。在字符串中连续的运算符可以使用递归的方法进行拆分。例如,下面的代码可以提取出字符串中的加号(+)和减号(-):

def extract_operators(string):
    left, separator, right = string.partition("+")
    if separator == "":
        left, separator, right = string.partition("-")
        if separator == "":
            return []
        else:
            return [separator] + extract_operators(right)
    else:
        return [separator] + extract_operators(right)

string = "4 + 5 - 2"
operators = extract_operators(string)

print(operators)    # ['+', '-']

这里定义了一个递归函数extract_operators(),每次调用会提取出一个加号或减号,然后对剩余的子串进行递归调用。如果分割字符不存在,则返回空列表。

总结

无论是使用正则表达式、split()函数还是字符串方法partition(),Python都提供了简单而又方便的方法来拆分字符串中的运算符。我们可以根据不同的场景选择不同的方法。