python: разобрать подстроку в скобках из строки - PullRequest
0 голосов
/ 28 января 2019

Какой питонный способ разобрать эту строку в скобках:

txt = 'foo[bar]'

, чтобы получить в результате:

bar

Что я пробовал:

КакЯ решил бы это, и я считаю, что это не очень элегантно:

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

Я твердо думаю, что есть библиотека или метод, который имеет более отказоустойчивое и элегантное решение для этого.Вот почему я создал этот вопрос.

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Использование Regex.

Пример:

import re

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

Выход:

['bar']
0 голосов
/ 30 января 2019

Еще один способ нарезки, используя 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
0 голосов
/ 28 января 2019

Один из многих способов, используя нарезку :

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

ИЛИ

import re

txt = 'foo[bar]'

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

ВЫХОД:

bar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...