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

时间:2019-01-28 08:32:52

标签: python parsing

什么是在括号中解析此字符串的pythonic方法:

txt = 'foo[bar]'

得到结果:

bar

我尝试了什么:

我将如何解决它,但我认为它不是很优雅:

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

我强烈认为,那里有一个库或方法对此具有更容错和更优雅的解决方案。这就是为什么我提出这个问题。

3 个答案:

答案 0 :(得分:0)

使用slicing是多种方式中的一种:

print(txt[4:].strip("[]"))

OR

import re

txt = 'foo[bar]'

m = re.search(r"\[([A-Za-z0-9_]+)\]", txt)
print(m.group(1))

输出:

bar

答案 1 :(得分:0)

使用正则表达式。

例如:

import re

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

输出:

['bar']

答案 2 :(得分:0)

另一种切片方法,使用AzureAD查找开始和结束定界符的位置。一旦获得Python切片,就可以像在列表中的索引一样使用它,除了该切片不仅给出单个字符,而且还给出了从头到尾的字符范围。

str.index

打印:

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])