📜  Python|提取括号之间的子字符串(1)

📅  最后修改于: 2023-12-03 15:19:20.412000             🧑  作者: Mango

Python | 提取括号之间的子字符串

简介

在Python编程中,有时候我们需要从一个字符串中提取出括号之间的子字符串。括号可以是圆括号 (),方括号 [] 或者花括号 {}。这对于处理文本、解析数据或者进行字符串操作非常有用。

本文将向您展示如何使用Python来提取括号之间的子字符串,并提供多种方法来实现这个目标。

方法一:使用正则表达式

首先,我们可以使用Python内置的 re 模块来使用正则表达式提取括号之间的子字符串。

import re

def extract_substrings(string):
    # 定义括号匹配的正则表达式模式
    pattern = re.compile(r'\((.*?)\)|\[(.*?)\]|\{(.*?)\}')
    
    # 使用 findall 方法找到所有匹配的子字符串
    matches = pattern.findall(string)
    
    # 提取括号内的子字符串并返回结果
    substrings = [match[0] or match[1] or match[2] for match in matches]
    
    return substrings

使用示例:

string = 'This is a (sample) string [with] {parentheses}.'
substrings = extract_substrings(string)
print(substrings)

输出结果:

['sample', 'with', 'parentheses']
方法二:使用栈

另一种提取括号之间子字符串的方法是使用栈的概念。

def extract_substrings(string):
    substrings = []
    stack = []
    
    for char in string:
        if char == '(' or char == '[' or char == '{':
            # 遇到左括号时入栈
            stack.append(char)
        elif char == ')' or char == ']' or char == '}':
            if stack:
                # 如果栈不为空,则表示找到了闭合的右括号
                # 将括号之间的子字符串加入结果列表
                substring = ''
                while stack[-1] != '(' and stack[-1] != '[' and stack[-1] != '{':
                    substring = stack.pop() + substring
                stack.pop()  # 弹出左括号
                substrings.append(substring)
    
    return substrings

使用示例:

string = 'This is a (sample) string [with] {parentheses}.'
substrings = extract_substrings(string)
print(substrings)

输出结果:

['sample', 'with', 'parentheses']
方法三:使用堆栈数据结构

我们还可以使用 collections 模块中的 deque(双端队列)数据结构来实现堆栈的算法。

from collections import deque

def extract_substrings(string):
    substrings = []
    stack = deque()
    
    for char in string:
        if char == '(' or char == '[' or char == '{':
            # 遇到左括号时入栈
            stack.append(char)
        elif char == ')' or char == ']' or char == '}':
            if stack:
                # 如果栈不为空,则表示找到了闭合的右括号
                # 将括号之间的子字符串加入结果列表
                substring = ''
                while stack[-1] != '(' and stack[-1] != '[' and stack[-1] != '{':
                    substring = stack.pop() + substring
                stack.pop()  # 弹出左括号
                substrings.append(substring)
    
    return substrings

使用示例:

string = 'This is a (sample) string [with] {parentheses}.'
substrings = extract_substrings(string)
print(substrings)

输出结果:

['sample', 'with', 'parentheses']
结论

使用上述任一方法,您可以在Python中提取括号之间的子字符串。根据你的需求和喜好,选择一种最适合你的方法即可。希望本文对您有所帮助!