什么是在括号中解析此字符串的pythonic方法:
txt = 'foo[bar]'
得到结果:
bar
我尝试了什么:
我将如何解决它,但我认为它不是很优雅:
result = txt.split('[')[1].split(']')[0]
我强烈认为,那里有一个库或方法对此具有更容错和更优雅的解决方案。这就是为什么我提出这个问题。
答案 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])