前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python 第33课】 处理文件中的数据

【Python 第33课】 处理文件中的数据

作者头像
Crossin先生
发布2018-04-16 13:20:24
8910
发布2018-04-16 13:20:24
举报

我们已经知道了如何读取和写入文件。有了这两个操作文件的方法,再加上对文件内容的处理,就能写一些小程序,解决不少日常的数据处理工作。

比如我现在拿到一份文档,里面有某个班级里所有学生的平时作业成绩。因为每个人交作业的次数不一样,所以成绩的数目也不同,没交作业的时候就没有分。我现在需要统计每个学生的平时作业总得分。

记得我小的时候,经常有同学被老师喊去做统计分数这种“苦力”。现在电脑普及了,再这么干就太弱了。用python,几行代码就可以搞定。

看一下我们的文档里的数据:

#-- scores.txt

刘备 23 35 44 47 51

关羽 60 77 68

张飞 97 99 89 91

诸葛亮 100

1.先把文件读进来:

f = file('scores.txt')

2.取得文件中的数据。因为每一行都是一条学生成绩的记录,所以用readlines,把每一行分开,便于之后的数据处理:

lines = f.readlines()

f.close()

提示:在程序中,经常使用print来查看数据的中间状态,可以便于你理解程序的运行。比如这里你可以print lines,看一下内容被存成了什么格式。

3.对每一条数据进行处理。按照空格,把姓名、每次的成绩分割开:

for line in lines:

data = line.split()

接下来的4、5两个步骤都是针对一条数据的处理,所以都是在for循环的内部。

4.整个程序最核心的部分到了。如何把一个学生的几次成绩合并,并保存起来呢?我的做法是:对于每一条数据,都新建一个字符串,把学生的名字和算好的总成绩保存进去。最后再把这些字符串一起保存到文件中:

sum = 0

for score in data[1:]:

sum += int(score)

result = '%s\t: %d\n' % (data[0], sum)

这里几个要注意的点:

对于每一行分割的数据,data[0]是姓名,data[1:]是所有成绩组成的列表。

每次循环中,sum都要先清零。

score是一个字符串,为了做计算,需要转成整数值int。

result中,我加了一个制表符\t和换行符\n,让输出的结果更好看些。

5.得到一个学生的总成绩后,把它添加到一个list中。

results.append(result)

results需要在循环之前初始化results = []

6.最后,全部成绩处理完毕后,把results中的内容保存至文件。因为results是一个字符串组成的list,这里我们直接用writelines方法:

output = file('result.txt', 'w')

output.writelines(results)

outpus.close()

大功告成,打开文件检验一下结果吧。

以下是完整程序,把其中print前面的注释符号去掉,可以查看关键步骤的数据状态。不过因为字符编码的问题,list的中文可能会显示为你看不懂的字符。

f = file('scores.txt')

lines = f.readlines()

#print lines

f.close()

results = []

for line in lines:

#print line

data = line.split()

#print data

sum = 0

for score in data[1:]:

sum += int(score)

result = '%s \t: %d\n' % (data[0], sum)

#print result

results.append(result)

#print results

output = file('result.txt', 'w')

output.writelines(results)

output.close()

面向零基础初学者的编程课

每天5分钟,轻松学编程

回复『 p 』查看课程目录

回复『 t 』查看习题列表

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2013-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档