我有一个名为“movie\u title”的数据框列,其中包含电影名称和年份。以下是上述专栏中的两种电影标题。你知道吗
title1='Toy Story (1995)'
title2='City of Lost Children, The (Cité des enfants perdus, La) (1995)'
我想把它分成两列,标题和发布年份。我能够使用以下正则表达式成功提取年份:
re.findall('[1-2][0-9]{3}', string)[0]
需要帮助写另一个正则表达式,可以提取标题(不包括年信息连同括号)。你知道吗
例如,标题1和标题2应类似于:
title1='Toy Story'
title2='City of Lost Children, The (Cité des enfants perdus, La)'
这几乎可以做到:
您只需要去掉它没有捕获的尾随
)
。如果我找到更好的答案,我会更新这个答案。你知道吗另一个想法:如果你确定每年都会出现在每部电影的结尾,为什么不把最后一部分去掉呢?所以从你所有的电影串中去掉
(xxxx)
?你知道吗来自regex101.com的
^(.*) \((19\d\d|20\d\d)\)$
解释:要获取年份并消除结尾的括号,请使用正则表达式“查找至少有一个数字后跟一个括号的第一个字符串”。正则表达式如下所示: '\d+(?=\)'
1.)\d表示查找一个数字,+infront表示至少查找其中一个
2.)(?=)表示后跟。\)表示字符“)”。所以(?)?=\))表示后跟“)”
3.)把这些放在一起意味着至少有一个数字后跟“)”的字符串
投入:失踪儿童之城(洛杉矶佩杜斯儿童城)(1995年)
产量:1995年
要获取电影标题,请使用regex“get the first string with any number of non-digits后跟'('如下所示:'\D*(?=\()'
1.)/D表示非数字。带*表示任意数量的非数字
我们又看到了(?)?=\()表示后跟'('
3.)总的来说,它意味着任何数量的非数字后跟'('
投入:失踪儿童之城(洛杉矶佩杜斯儿童城)(1995年)
产出:失踪儿童之城(洛杉矶佩杜斯市儿童城)
注意:获取标题的正则表达式假设标题中没有数字。你知道吗
相关问题 更多 >
编程相关推荐