Извлечение слов между разделителями [] в python - PullRequest
7 голосов
/ 18 мая 2010

Из приведенной ниже строки я хочу извлечь слова между разделителями [ ], например 'Service Current','Service','9991','1.22':

str='mysrv events Generating Event Name [Service Current], Category [Service] Test [9991] Value [1.22]'

Как я могу извлечь то же самое в Python?

Спасибо заранее Kris

Ответы [ 3 ]

20 голосов
/ 18 мая 2010

Во-первых, избегайте использования str в качестве имени переменной. str уже имеет значение в Python, и, определив его как нечто другое, вы будете путать людей.

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

>>> import re
>>> print re.findall(r'\[([^]]*)\]', s)
['Service Current', 'Service', '9991', '1.22']

Это работает следующим образом:

\[   match a literal [
(    start a capturing group
[^]] match anything except a closing ]
*    zero or more of the previous
)    close the capturing group
\]   match a literal ]

Альтернативное регулярное выражение:

r'\[(.*?)\]'

Это работает с использованием не жадного совпадения вместо сопоставления чего-либо, кроме ].

4 голосов
/ 18 мая 2010

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

import re
s = re.findall('\[(.*?)\]', str)
2 голосов
/ 18 мая 2010
re.findall(r'\[([^\]]*)\]', str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...