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

从TXT文件提取销售数据并按销售额排序的Python代码问题

解决提取销售数据并排序输出的问题

原代码问题分析

  • 错误代码中,split('(')得到的amount是包含销售额与冗余字符的字符串(比如类似"500 sold)"),直接遍历amount的字符会将每个字符单独输出,完全偏离提取销售额的目标。
  • 未先收集所有商品与销售额数据,排序操作需要基于完整数据集,零散处理无法实现排序需求。

修正后的代码实现

# 存储商品与销售额的列表
sales_data = []

with open('myfile.txt', 'rt') as myfile:
    for myline in myfile:
        # 筛选包含销售数据的行
        if "sold" in myline:
            # 分割商品名和销售额所在片段
            item_part, amount_part = myline.split('(')
            # 清理商品名的换行符与多余空格
            item = item_part.strip()
            # 提取销售额数值(假设格式为"XXX sold)",按空格分割取第一个元素转整数)
            amount = int(amount_part.split()[0])
            # 将数据存入列表,用于后续排序
            sales_data.append((amount, item))

# 按销售额降序排序(若要升序,去掉reverse=True即可)
sorted_data = sorted(sales_data, key=lambda x: x[0], reverse=True)

# 按要求格式带索引输出商品名
for idx, (_, item) in enumerate(sorted_data, start=1):
    print(f"{idx}- {item}")

代码说明

  1. 数据收集:先通过列表sales_data存储所有商品对应的销售额与名称,确保排序基于完整数据集。
  2. 销售额提取:通过split()从片段中分离出数字部分并转为整数,保证排序逻辑的正确性。
  3. 排序逻辑:使用sorted()的key参数指定按销售额排序,reverse=True实现从高到低的降序排列。
  4. 索引输出:enumerate的start=1参数让索引从1开始,匹配预期的输出格式。

格式适配说明

如果TXT中销售额格式不同(比如括号内是"sold: 500"),只需调整销售额提取逻辑:

# 适配"(sold: 500)"格式
amount = int(amount_part.split(':')[1].strip())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:20:32