как назвать самые глубокие скобки питона - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь сделать этот пример:

sentence="{My name is {Adam} and I don't work here}"

Результат должен быть 'Adam'

Так что я пытаюсь сказать, сколько бы ни было скобок, я хочу получить результатпоказать значение последней закрытой скобки

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Это не ясно из вашего вопроса, но если когда-либо может быть только один набор внешних фигурных скобок на любом уровне (т. Е. "{My name} {is {Adam}}" и "{My {name} is {Adam}}" являются недействительными входными данными), вы можете воспользоваться тем фактом, что вы хотитеэто последняя открывающая скобка в предложении.

def deepest(sentence):
     intermediate = sentence.rpartition("{")[-1]
     return intermediate[:intermediate.index("}")]

deepest("{My name is {Adam} and I don't work here}")
# 'Adam'
deepest("{Someone {set us {{up} the bomb}!}}")
# 'up'

Ответ на регулярное выражение также делает это предположение, хотя регулярное выражение, вероятно, будет намного медленнее.Если возможно несколько внешних скобок, уточните свой вопрос.

0 голосов
/ 28 ноября 2018

Вы не можете просто индексировать такие строки ... Лучший способ - использовать умное регулярное выражение:

>>> import re
>>> re.search(r'{[^{}]*}', "{My name is {Adam} and I don't work here}").group()
'{Adam}'

Этот шаблон регулярного выражения, по сути, ищет каждый набор {}, который несодержат символы { или }.

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