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

Python新手求助:带::分隔符的电影列表拆分与年份提取调整

解决你的电影列表格式转换问题

嘿,别着急!作为Python新手刚接触字符串处理的时候,确实容易遇到这类卡壳的情况,我来一步步帮你搞定这个需求~

首先咱们先明确核心操作要点:

  • 把每个独立的电影条目从原始字符串里拆分出来(要注意电影名可能带空格,不能直接按空格分割)
  • 精准提取电影名里括号中的四位年份
  • 去掉电影名里的年份和括号,再把年份移到条目的末尾
  • 按目标格式重新拼接所有条目

完整代码实现

import re

# 你的原始电影列表字符串
original_movies = "1::Erin Burkovich (2000)::Drama 2::Assassins (1995)::Thriller"

# 第一步:拆分出每个独立的电影条目(解决电影名带空格的问题)
movie_entries = re.findall(r'\d+::.*?(?=\s\d+::|$)', original_movies)

# 第二步:逐个处理每个条目,转换格式
formatted_entries = []
for entry in movie_entries:
    # 用::拆分条目,得到编号、带年份的电影名、类型
    parts = entry.split('::')
    movie_id, movie_with_year, genre = parts[0], parts[1], parts[2]
    
    # 提取括号里的四位年份
    year_match = re.search(r'\((\d{4})\)', movie_with_year)
    if year_match:
        year = year_match.group(1)
        # 清理电影名,去掉末尾的年份和括号(包括可能的空格)
        clean_movie_name = re.sub(r'\s*\(\d{4}\)', '', movie_with_year)
        # 按目标格式拼接新条目
        new_entry = f"{movie_id}::{clean_movie_name}:{genre}::{year}"
        formatted_entries.append(new_entry)

# 第三步:把处理好的条目拼接成最终结果字符串
final_result = ' '.join(formatted_entries)
print(final_result)

代码细节解释

  1. 拆分条目:用正则表达式r'\d+::.*?(?=\s\d+::|$)'匹配每个完整的电影条目,这样即使电影名里包含空格,也不会错误拆分条目。
  2. 提取年份:用re.search(r'\((\d{4})\)', ...)精准定位括号中的四位数字,确保只提取年份信息。
  3. 清理电影名:用re.sub(r'\s*\(\d{4}\)', '', ...)移除电影名末尾的年份和括号(包括括号前可能存在的空格)。
  4. 拼接新格式:通过f-string按编号::电影名:类型::年份的要求重新组合内容。

运行这段代码后,你会得到完全符合预期的输出:

1::Erin Burkovich:Drama::2000 2::Assassins:Thriller::1995

如果你的原始列表里有更多条目,只要每个条目都遵循编号::电影名(年份)::类型的格式,这段代码都能轻松处理~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:32:57