python:从字符串解析括号中的子字符串

python:从字符串解析括号中的子字符串,python,parsing,Python,Parsing,用什么样的pythonic方法来解析括号中的字符串: txt = 'foo[bar]' 要得到结果: bar 我试过什么: 我将如何解决它,我相信它不是很优雅: result = txt.split('[')[1].split(']')[0] 我强烈认为有一个库或方法可以提供更具容错性和优雅的解决方案。这就是我提出这个问题的原因。多种方法中的一种,使用: 或 输出: bar 使用正则表达式 Ex: import re txt = 'foo[bar]' print(re.findall(

用什么样的pythonic方法来解析括号中的字符串:

txt = 'foo[bar]'
要得到结果:

bar
我试过什么:

我将如何解决它,我相信它不是很优雅:

result = txt.split('[')[1].split(']')[0]

我强烈认为有一个库或方法可以提供更具容错性和优雅的解决方案。这就是我提出这个问题的原因。

多种方法中的一种,使用:

输出:

bar
使用正则表达式

Ex:

import re

txt = 'foo[bar]'
print(re.findall(r"\[(.*?)\]", txt))
['bar']
输出:

import re

txt = 'foo[bar]'
print(re.findall(r"\[(.*?)\]", txt))
['bar']

另一种是切片,使用
str.index
查找起始分隔符和结束分隔符的位置。一旦获得Python切片,就可以像索引一样将其放入列表中,除了切片不只是给出单个字符,而是从开始到结束的字符范围

def make_slice(s, first, second):
    floc = s.index(first)
    sloc = s.index(second, floc)
    # return a Python slice that will extract the contents between the first
    # and second delimiters
    return slice(floc+1, sloc)

txt = 'foo[bar]'

slc = make_slice(txt, '[', ']')
print(txt[slc])
印刷品:

bar
可能重复的