
简单数据处理
学会了文件的输入输出之后,我们就可以开始尝试做一些简单的数据处理工作。
打开我们的源数据
我们先预先设置一个txt文件,构建一个数据内容。(这里我选用了暗耻三国志的部分人物数据)
file = open('..\Py-data\#024.txt')
lines = file.readlines()
#print(lines)
file.close()
这里使用了 readlines 函数,把数据文件里面的每一行数据进行转换为列表格式。
可以看到,变量 lines 里面是列表结构存储数据内容的。
分割数据
用一个for循环,将 line 每一行输出提取出来。再使用 split() 函数,将每个 list 的元素,转换为普通变量。
for line in lines:
#print(line)
data = line.split()
#print(data)
line 是这一 list 的元素被单独提炼出来,data是用来存储每次for循环split出来的每一个元素。
注意:lines 被 line 提炼出来单个列表元素,data 再通过split()函数,将 line 分解成新的列表元素。
数据运算
经过数据分割之后的数据,每一行,都单独分为一个列表格式的结构,存在data之中,那么我们现在在这个 for 循环中建立一个新的循环结构,
for line in lines:
data = line.split()
sum = 0
for score in data[1:]:
sum += int(score)
#print(sum)
result = '%s \t: %d\n' % (data[0], sum)
#print(result)
我们知道line从lines中提炼出每一行数据,data通过split在line中,将每一行数据的每个元素提炼出来。其中可以看见,data除了第一个数据是名称以外,其余的都是数值。这是就可以重制一个sum变量,在下一级的for循环之前,将累加值变量sum重置为0。
可以看到,内嵌的for循环,会用 score 变量,将data内部的元素,由[1:]开始提取至最后一位,每次for循环累加进入sum中,然后会输出本轮循环的sum值。
最后在内嵌for循环外,外for循环中,加上result的结果。
整合处理之后的数据
外部的for循环的最后,加下列语句。
results.append(result)
#print(results)
这个results是for循环之外定义的一个空列表,通过append()函数对其进行追加输入内容。
我们可以看到,在效果运行之后,我们的results将之前的每一行的result进行内容追加。
打包输出数据文件
使用我们之前学过的写文件课程,我们来将现在这个数据输出为数据文件。
targetfile = open('..\Py-data\#024-output.txt','w')
targetfile.writelines(results)
targetfile.close()
注意results这个地方对接上数据,函数不要拼写错误。
完整简化代码
# 读取数据源
file = open('..\Py-data\#024.txt')
lines = file.readlines()
file.close()
# 初始化
results = []
# 数据处理
for line in lines:
data = line.split()
sum = 0
for score in data[1:]:
sum += int(score)
result = '%s \t: %d\n' % (data[0], sum)
results.append(result)
# 输出数据结果
targetfile = open('..\Py-data\#024-output.txt','w')
targetfile.writelines(results)
targetfile.close()
这段时间我在休假,休假就去很多地方玩了,基本没更文章,其实积压了很多内容,像今天的课程,其实还有蛮多的内容之前没有教的,现在都直接用上了。
不过反向学习也是不错的,接下来我们会倒回头去学习这节课中用到的,之前没教过的内容。