2016-08-17 4 views
1

У меня есть строка «Имя (что-то)», и я пытаюсь извлечь часть строки в круглых скобках!Извлечь строку в круглых скобках - PYTHON

Iv'e попробовал следующие решения, но, похоже, не получал результаты, которые я ищу.

n.split('()') 

name, something = n.split('()') 
+2

Какой язык ?. – Maroun

+0

Хороший вопрос! Python. –

+0

Спасибо! ошибка школьного мальчика! –

ответ

7

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

>>> s = 'Name(something)' 
>>> re.search('\(([^)]+)', s).group(1) 
'something' 

Регулярным выражение совпадает с первым «(», то это соответствует всему этому не а «)»:

  • \( соответствует символу "(" буквально
  • группу захвата ([^)]+) жадностью соответствует нибудь, что это не ")"
+0

Спасибо! имеет смысл, однако я получаю ошибку, которая не определена, вам нужно импортировать библиотеку для этой функции? –

+0

@olly_t 'import re' – Maroun

0

Вы можете использовать раскол, как в вашем примере, но этот путь

val = s.split('(', 1)[1].split(')')[0] 

или с использованием регулярных выражений

+1

Спасибо! это сработало! –

0

Вы можете использовать re.match:

>>> import re 
>>> s = "name(something)" 
>>> na, so = re.match(r"(.*)\((.*)\)" ,s).groups() 
>>> na, so 
('name', 'something') 

, который соответствует двум (.*), что означает что угодно, где вторая находится между пар entheses \( & \).

0

как улучшенный ответ @Maroun Марун «s:

re.findall('\(([^)]+)', s) 

он находит все экземпляры строк в круглых скобках

Смежные вопросы