【pythonLab1 实验3-3】完成文件转移之间的数据处理,让数据发生变化

题目:
有一个文件名字叫:‘吃鸡排行.txt’打开之后看到如下:
大数据第一战队_落地成盒 23 35 44 90 70
大数据第二战队_跑毒 60 77 68 88 90
大数据第三战队_神打野 97 99 89 91 99
大数据第四战队_ 鱼塘局 85 90 98 89
先把以上四行存为单独一个txt文件;1. 通过读取txt文件,打印出来每个战队的名字和总分,例如
大数据第一战队_落地成盒262
大数据第二战队_跑毒383
……
……
2把上面4行内容,存为列表并且写入一个名叫winner.txt文件中
3让战队的成绩从高到低排列,然后放到新文档“winner_new.txt”。
提示:对于3,可能要用到re包,字典、sorted()\zip()\map()\re.findall()\re.compile()

那个re包我看了好久也看不懂,所以用了很笨的方法

下面就直接贴代码

# -*- coding = utf-8 -*-
"""
#@Time:2022年03月20日
#@Author:YuDai
#@File:吃鸡排名.py
#@Software : PyCharm
"""
# 用来计算列表中数字部分的和,因为队伍名字是字符串不能直接加
def sum_of_list(list):
    sum = 0
    for k in range(len(list)):
        if list[k].isdigit():
            sum+=int(list[k])       # 记得转换类型,列表里的那个数是str类型的
    return sum


# 打开文件读取数据
# 记得改地址
file1 = open("这里是吃鸡排行。txt的地址", 'r', encoding='utf-8')
file_lines = file1.readlines()
file1.close()

j=0     # 循环变量
dict_scores = {}    # 存放最后的队伍名称和分数
final_scores = [0, 0, 0, 0]     # 各队伍最后的得分
group_names=[0, 0, 0, 0]        # 各队伍的名字

# 获取数据
for i in file_lines:
    data =i.split()     # 根据空格分割数据 data[0]是队伍名字,后面是分数
    group_names[j]=data[0]      # 赋值给列表group_names
    final_scores[j]=str(sum_of_list(data))      # 调用函数计算队伍分数
    j+=1

# 将队伍名字和分数进行组合放进列表
for key in group_names:
    dict_scores[key] = final_scores[group_names.index(key)]

# 啊,这个是一个sorted的用法,我也不清楚怎么搞得。
# 反正reverse默认是False 升序排列,反之Ture就是降序排列
# 那个dict_scores.items()是你要排序的对象
# key=lambda e: e[1]这个玩意是个匿名函数,具体啥意思我也不知道
dict_scores=dict(sorted(dict_scores.items(), key=lambda e: e[1], reverse=True))

# 生成一个新文件
# 要是没有目标文件的话会自己生成一个
# 记得改一下地址
winner_new = open('这里是新生成文件的地址', 'w', encoding='utf-8')
# 把字典的数据写入文件
for item in dict_scores.items():
    winner_new.writelines(item)
    winner_new.writelines('\n')
winner_new.close()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值