2015-07-11 3 views
0

Если я хочу извлечь список только ['Horror', 'Adult', 'Cult Movies' и т. Д.] Из этого class 'pandas.core.index.Index, что было бы лучшим регулярным выражением для этого? Что-то, что захватывает все за столицей Ts до закрытой скобки? Но тогда это плохой подход, учитывая, что «Телевидение» начинается с капитала T? Каким должен быть подход? Я никогда не пользовался регулярным выражением раньше, так что был бы признателен за любой совет/код!Регулярные выражения Нужна помощь

Index([u'variable[T.Horror]', u'variable[T.Adult]', u'variable[T.Cult Movies]', u'variable[T.Mystery & Suspense]', u'variable[T.Science Fiction & Fantasy]', u'variable[T.Western]', u'variable[T.Gay & Lesbian]', u'Q("Tomato-meter")', u'variable[T.Comedy]', u'variable[T.Television]', u'variable[T.Kids & Family]', u'variable[T.Classics]', u'variable[T.Drama]', u'variable[T.Art House & International]', u'variable[T.Romance]', u'variable[T.Special Interest]', u'variable[T.Animation]', u'variable[T.Documentary]', u'variable[T.Musical & Performing Arts]', u'variable[T.Sports & Fitness]', u'variable[T.Faith & Spirituality]', u'variable[T.Anime & Manga]', u'Intercept'], dtype='object') 
+1

Почему не просто все, что следует за 'T.' (включая период)? –

+0

есть ли способ сделать «все, что следует за T. вверх до»? – SpicyClubSauce

+0

Уверен: 'T \. (. *) \]'. Скобки обозначают группу захвата –

ответ

1

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

(?<=T\.)([^\]]+) 

См DEMO

+0

Что я здесь делаю неправильно? импорт повторно рег = re.compile (г '(? <= Т \.) ([^ \]] +)', Testreginput) печать рег testreginput является строка из этого большого блока кода в моем вопросе ... – SpicyClubSauce

0

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

>>> import re 
>>> regx=re.compile(r'(?<=\[T\.)([^\]]+)(?=\])') 
>>> [regx.search(i).group() for i in mylist if '[' in i] 
[u'Horror', u'Adult', u'Cult Movies', u'Mystery & Suspense', u'Science Fiction & Fantasy', u'Western', u'Gay & Lesbian', u'Comedy', u'Television', u'Kids & Family', u'Classics', u'Drama', u'Art House & International', u'Romance', u'Special Interest', u'Animation', u'Documentary', u'Musical & Performing Arts', u'Sports & Fitness', u'Faith & Spirituality', u'Anime & Manga'] 

Это регулярное выражение используется positive look-around, который будет сопоставлять каждую тонну без ] между (?<=\[T\.) и (?=\]).

Также обратите внимание, что в качестве более пифонического и оптимизированного способа я использовал re.compile для компиляции вашего регулярного выражения вне вашего понимания списка, чтобы отказаться от компиляции регулярного выражения на каждой итерации.

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