其他分享
首页 > 其他分享> > 实验八、文件

实验八、文件

作者:互联网

实验八  文件

班级 :        物流192   

姓名 :        郜晨星            

学号 :        3190505230     

日期 :        2020年6月3日   

指导老师 :     修宇 

 

 

【实验目的】  

       掌握读写文本文件或 CSV 文件,进而对数据进行处理的方法。

【实验条件】  

PC机或者远程编程环境

【实验内容】

完成二个编程题。

1)水浒传词频统计

水浒传-词频统计

描述

使用词频统计的方法,生成《水浒传》出场次数最多的10个人物的姓名。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

 水浒传文本下载:

读取《水浒传》文本文件的代码如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

txt = open("AllManAreBrothers.txt", "r", encoding="utf-8").read()

 

 代码模板:

# ThreeKingdomsV2

import jieba

# 读取txt文件,获取需要统计词汇的文本

txt = open("AllManAreBrothers.txt", "r", encoding="utf-8").read()

# 设置需要输出最多的前n位人物的数量

n = 10

# 请在下列exludes集合中,自行补充其他需要排除的词汇

excludes = {

    "两个", "一个", "只见", "如何", "那里", "哥哥",

}

words = jieba.lcut(txt)

counts = {}

# 请扩展下列分支结构,转换更多替代词

for word in words:

    if len(word) == 1:

        continue

    elif word == "宋江道":

        rword = "宋江"

    else:

        rword = word

    counts[rword] = counts.get(rword, 0) + 1

    

# 实现删除干扰词汇功能(此处约2行代码)    

# 使用列表和lambda功能实现 词汇的排序 (此处约2行代码)    

# 依次输出统计次数最多的前n位(此处约3行代码)  


2)血压心率分析

描述

BP.txt”是以逗号分隔的日期、血压、心率记录数据文本文件( open('BP.txt',encoding="gbk"))

 

 统计收缩压、舒张压、心率的总平均值(保留3位小数)。

 

 

 

问题一:

 

 

问题分析:题目要求为:统计出场次数最多的10个人物的姓名,而简单的通过jieba库分词所统计的词语中可能会出现非人名或者是同一个人物有不同的名称导致统计该人物出场的次数有误。首先利用jieba库进行分词,再通过不断地调试运行得到非人名的词语,并利用集合排除这些词语。又因为同一个人物可能有不同的名称或者分词中出现单个词,利用循环结构去除单个词以及添加这些人物的其他名称,便于统计人物出场次数。

 

调试运行得到非人名的词语:

 

 

 

 

问题二:根据老师给的提示补充完整,理解代码含义

 

问题分析:首先以正确方式打开文件,并通过f.readline()的方式读入文件所有行,以每行元素形成列表。文件需要删除表头,所以利用到了del ls[0]即为删除该列表的第一个元素。然后设计遍历循环结构,遍历此时列表中的每一个元素,因为每一个元素中含有三个待处理的字符串,所以再遍历循环结构的内部再添加循环结构,目的在于将相对应的数值进行加和。最后依次取出列表m中的各个元素求平均值,再利用print函数的格式化按题目要求输出结果。

 

 

错误一:未删除文件表头内容

 

报错类型:ValueError

错误分析:此时列表的第一个元素不是待处理的数值而是文字。

 

 

错误二:未将字符串类型转化为浮点数类型

 

报错类型:TypeError

错误分析:此时x是字符串无法直接参与数值计算。

 

标签:文件,rword,水浒传,列表,实验,txt,统计
来源: https://www.cnblogs.com/20010924xing/p/13039983.html