如何编写正则表达式从这个字符串中检索类型?

2024-09-22 16:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我想从这个class 'pandas.core.index.Index中提取一个['Horror'、'Adult'、'Cult Movies'等]的列表,那么什么正则表达式最适合这个呢?什么东西把所有的东西都抓住,直到一个封闭的括号?你知道吗

但如果“电视”以大写字母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')

Tags: 方法corepandas列表index大写字母moviesvariable
2条回答

可以使用以下正则表达式:

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

DEMO

您可以在列表中使用以下正则表达式:

>>> 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\.)(?=\])之间没有]的每一个thin。你知道吗

还要注意的是,作为一种更加python和优化的方式,我使用re.compile在列表理解之外编译regex,以拒绝在每次迭代中编译regex。你知道吗

相关问题 更多 >