python:从字符串解析括号中的子字符串
用什么样的pythonic方法来解析括号中的字符串: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(
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
可能重复的