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

如何从TXT文件提取数据,统计指定年份与国家的演员出现次数

解决方案

步骤拆解与代码实现

1. 优化数据读取(更高效安全)

你原来的代码重复打开了两次文件,这里用with语句简化,自动管理文件资源:

with open("/content/drive/My Drive/netflix.txt", "r") as f:
    data = [line.strip().split('\t') for line in f]

2. 筛选符合条件的数据

假设你已经通过校验得到了有效的start_year(起始年份,整数)、end_year(结束年份,整数)和target_country(目标国家),用列表推导式快速筛选:

# 筛选年份在范围内且国家匹配的数据
filtered_data = [
    item for item in data
    if start_year <= int(item[4]) <= end_year and item[3] == target_country
]
  • item[4]对应release_year,需转成整数才能和输入年份比较
  • item[3]对应country,直接和目标国家字符串匹配

3. 拆分演员并统计频次

用collections.Counter可以高效统计演员出现次数,注意演员字段通常是多个演员用", "分隔,需要拆分后逐个统计:

from collections import Counter

actor_counter = Counter()

for item in filtered_data:
    # 处理空演员字段的情况,避免报错
    cast_list = item[2].split(', ') if item[2] else []
    actor_counter.update(cast_list)

4. 输出统计结果

按出现次数从高到低排序输出:

print(f"{start_year}-{end_year}年{target_country}电影演员出镜次数统计:")
for actor, count in sorted(actor_counter.items(), key=lambda x: x[1], reverse=True):
    print(f"{actor}: {count}次")

完整示例代码

整合所有步骤,包含异常数据处理(比如年份格式无效的情况):

from collections import Counter

# 读取数据
with open("/content/drive/My Drive/netflix.txt", "r") as f:
    data = [line.strip().split('\t') for line in f]

# 假设已完成输入校验,这里用示例值
start_year = 2010
end_year = 2020
target_country = "United States"

# 筛选数据(处理年份无效的异常)
filtered_data = []
for item in data:
    try:
        release_year = int(item[4])
        if start_year <= release_year <= end_year and item[3] == target_country:
            filtered_data.append(item)
    except ValueError:
        # 跳过年份格式错误的数据
        continue

# 统计演员次数
actor_counter = Counter()
for item in filtered_data:
    cast_list = item[2].split(', ') if item[2] else []
    actor_counter.update(cast_list)

# 输出结果
print(f"{start_year}-{end_year}年{target_country}电影演员出镜次数统计:")
for actor, count in sorted(actor_counter.items(), key=lambda x: x[1], reverse=True):
    print(f"{actor}: {count}")

注意事项

  • 如果演员字段的分隔符不是", "(比如只有逗号无空格),调整split(',')即可
  • 若存在多国家数据(比如"United States, Canada"),需要修改匹配逻辑,比如用target_country in item[3]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:52:49