【问题标题】:Capturing groups of movie title捕获电影标题组
【发布时间】:2021-04-04 08:38:42
【问题描述】:

我正在尝试从电影标题中捕获以下组:

file = "The Great Home Se01E01 Meatballs for Dinner"

<show> = "The Great Home"
<season> = "Se01"
<episode> = "E01"
<title> = "Meatballs for Dinner"

目前,我只是部分设法捕获并使用了以下代码:

import re

file = "The Great Home Se01E01 Meatballs for Dinner"
seasonEpID = re.search(r'(\bS/?.+\d{1,2})+(E/?.+\d{1,2})', file)
print(seasonEpID.groups())

返回以下内容:

('Se01', 'E01')

如何捕获&lt;show&gt;&lt;season&gt;&lt;episode&gt;&lt;title&gt;这四个组?

【问题讨论】:

标签: python regex python-re


【解决方案1】:

我会将re.findall 与以下正则表达式模式一起使用:

^(.*?)\s+(Se\d+)(E\d+)\s+(.*)$

示例脚本:

file = "The Great Home Se01E01 Meatballs for Dinner"
parts = re.findall(r'^(.*?)\s+(Se\d+)(E\d+)\s+(.*)$', file)
print(parts)

打印出来:

[('The Great Home', 'Se01', 'E01', 'Meatballs for Dinner')]

【讨论】:

    【解决方案2】:
    import re
    file = "The Great Home Se01E0k1 Meatballs for Dinner"
    match = re.fullmatch(r"(?P<show>.+?) (?P<season>Se\d+)(?P<episode>E\d+) (?P<title>.+)", file)
    print(match.groupdict() if match else "No match") 
    
    '''
    {
      'episode': 'E01',
      'season': 'Se01',
      'show': 'The Great Home',
      'title': 'Meatballs for Dinner'
    }
    '''
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 2020-08-13
      • 2017-10-05
      • 2011-05-14
      • 1970-01-01
      相关资源
      最近更新 更多