Python:使用正则表达式将括号中的年数拆分为字符串

Python:使用正则表达式将括号中的年数拆分为字符串,python,Python,假设我有一个类似str=“隐形人(2020)”的字符串。在Python中,我想将其拆分为一个带有字符串+数字的列表(年数始终位于字符串末尾)年份,如下所示: [《看不见的人》,《2020》] 如何使用Python中的正则表达式实现这一目标?这里有一种使用re.split的方法,它适用于此特定的字符串结构: import re s = "The Invisible Man (2020)" re.split(r'\s+\((\d+)\)', s)[:2] # ['The Invisible Man

假设我有一个类似str=“隐形人(2020)”的字符串。在Python中,我想将其拆分为一个带有字符串+数字的列表(年数始终位于字符串末尾)年份,如下所示:

[《看不见的人》,《2020》]


如何使用Python中的正则表达式实现这一目标?

这里有一种使用
re.split
的方法,它适用于此特定的字符串结构:

import re

s = "The Invisible Man (2020)"
re.split(r'\s+\((\d+)\)', s)[:2]
# ['The Invisible Man', '2020']

您可以为整个字符串编写正则表达式,并使用
re.search
re.search.groups
从字符串中获取标题和年份:

import re

s = "The Invisible Man (2020)"

regex = r"(.+) \((\d+)\)"

title, year = re.search(regex, s).groups()

print('title = "{}", year = "{}"'.format(title, year))
输出:

title = "The Invisible Man", year = "2020"

下面是使用regexp和命名组的一种方法。取最长的字符串,后跟空格和左括号,并将其命名为name。然后在括号内取4位数字,并将其命名为年份

最后根据问题的要求列出一份清单

import re
r = re.compile(r'(?P<name>([a-zA-Z ]*)) \((?P<year>\d\d\d\d)\)')
m = r.match("The Invisible Man (2020)")
l = [m.group('name'), m.group('year')]
重新导入
r=re.compile(r'(?P([a-zA-Z]*)\)\(?P\d\d\d)\))
m=r.match(“隐形人(2020)”)
l=[m.group('name'),m.group('year')]

添加了说明。希望能有帮助