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

如何编写读取TXT文件并累计用户时长的脚本?

解决方案

1. 定义用户类

先定义一个简单的User类,用来存储用户姓名和累计时长:

class User:
    def __init__(self, name):
        self.name = name
        self.total_duration = 0.0
    
    def add_duration(self, duration):
        self.total_duration += duration

2. 读取文件并处理数据

用字典管理用户对象(键为用户名,值为对应的User实例),快速判断用户是否已存在,实现累加逻辑:

# 初始化存储用户的字典
users = {}

# 读取目标文本文件
with open('data.txt', 'r') as file:
    for line in file:
        # 去除行首尾空白,按空格拆分(最多拆4次,避免姓名被拆分)
        parts = line.strip().split(maxsplit=4)
        if len(parts) != 5:
            continue  # 跳过格式错误的行
        
        # 提取用户名和时长
        username = f"{parts[0]} {parts[1]}"
        duration = float(parts[4])
        
        # 处理用户对象:存在则累加时长,不存在则新建
        if username in users:
            users[username].add_duration(duration)
        else:
            users[username] = User(username)
            users[username].add_duration(duration)

# 输出最终统计结果
for user in users.values():
    print(f"用户: {user.name}, 总时长: {user.total_duration:.2f}")

3. 关键逻辑说明

  • 字典的作用:以用户名作为键,能在O(1)时间内判断用户是否已存在,比遍历列表高效很多。
  • split(maxsplit=4):确保姓名的两个单词不会被拆分,因为每行结构固定为「名 姓 日期 时间 时长」,拆分4次刚好得到5个有效部分。
  • 格式检查:加入行元素数量判断,避免因文件内存在无效行导致报错。

运行代码后,针对你提供的文本内容,会输出:

用户: John Smith, 总时长: 13.24
用户: Chris Rock, 总时长: 8.64
用户: Jane Doe, 总时长: 7.60

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:10:28