You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Split()函数使用及电影名年份拆分异常问题求助

解决电影标题与年份拆分的异常问题

嘿,我完全懂你的困扰——那些带额外括号的电影标题确实会把简单的split逻辑搞崩!别慌,咱们换个思路,用正则表达式精准定位最后那个年份括号,就能完美解决这个问题。

为什么之前的方法不行?

你之前用的str.split('(', 1, expand=True)是按第一个左括号拆分,但像City of Lost Children, The (Cité des enfants perdus, La) (1999)这种标题,第一个左括号是标题的一部分,拆分后第二列会包含多余的内容,不是我们要的年份。

解决方案:用str.extract配合正则表达式

正则表达式可以精准匹配最后一个括号里的四位年份,不管标题里有多少其他括号。具体代码如下:

# 拆分标题和年份
movies[['clean_title', 'release_year']] = movies['title'].str.extract(r'^(.*)\s\((\d{4})\)$', expand=True)

正则表达式解释:

  • ^(.*):贪婪匹配从开头到最后一个空格+左括号之前的所有内容,这样就能保留标题里的所有括号和内容
  • \s\(:匹配年份前的空格和左括号(确保是最后那个括号)
  • (\d{4}):匹配四位数字的年份(电影上映年份基本都是四位)
  • \)$:匹配年份后的右括号,确保是结尾的括号

测试异常案例

对于你提到的两个异常案例:

  1. City of Lost Children, The (Cité des enfants perdus, La) (1999) → 拆分后clean_title是City of Lost Children, The (Cité des enfants perdus, La),release_year是1999
  2. City of Lost Children, The. Cité des enfants perdus, La) (1999) → 拆分后clean_title是City of Lost Children, The. Cité des enfants perdus, La),release_year是1999

完全符合你的期望!

额外小提示

如果有些标题没有年份括号,str.extract会返回NaN,你可以用fillna处理这些情况:

# 处理缺失的年份值
movies['release_year'] = movies['release_year'].fillna('Unknown')

内容的提问来源于stack exchange,提问作者vivace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:09:15