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)
代码细节解释
- 拆分条目:用正则表达式
r'\d+::.*?(?=\s\d+::|$)'匹配每个完整的电影条目,这样即使电影名里包含空格,也不会错误拆分条目。 - 提取年份:用
re.search(r'\((\d{4})\)', ...)精准定位括号中的四位数字,确保只提取年份信息。 - 清理电影名:用
re.sub(r'\s*\(\d{4}\)', '', ...)移除电影名末尾的年份和括号(包括括号前可能存在的空格)。 - 拼接新格式:通过f-string按
编号::电影名:类型::年份的要求重新组合内容。
运行这段代码后,你会得到完全符合预期的输出:
1::Erin Burkovich:Drama::2000 2::Assassins:Thriller::1995
如果你的原始列表里有更多条目,只要每个条目都遵循编号::电影名(年份)::类型的格式,这段代码都能轻松处理~
内容的提问来源于stack exchange,提问作者Tyr
相关产品推荐
相关产品推荐

