首页 > 编程语言 >python学习-第三方库综合程序设计实验报告

python学习-第三方库综合程序设计实验报告

时间:2023-03-08 15:32:35浏览次数:45  
标签:文本 word python text py 实验 程序设计 counts 实验报告


目录

实验四:  Python综合程序设计

实验名称:Python综合程序设计                           指导教师:           

实验日期: 2022  12    5  日                       实验地点:           

一、实验目的:

1. 了解多种第三方库的使用方法, 掌握jieba库的基本使用;

2. 掌握文件的读写方法以及打开关闭等基本操作;

3. 了解自顶向下的设计方法和自底向上的执行过程;

4. 了解计算生态和模块编程思想。

二、实验设备及分组

1. PC机或笔记本电脑若干;

2. Window 7及以上版本操作系统;

3. Python 运行环境。

三、实验任务及要求:

实验1-统计高频字符

1.编写程序,统计文件“Nixon.txt”中出现频率最高的20个单词,并将统计结果写入“Tongji.txt”文件中。(注意:除去'the','and','to','of','a','be','from','in','for'等无意义的单词。)

实验分析:本次实验需要读取和写入文件,需要同学掌握py中对文件的操作。统计高频词,则需使用字典对其统计。在完成本次实验时,需要同学对py有一定的学习和理解。

实验重难点:Py中对文件的读取和写入,对列表,字典数据类型的理解和使用

实验源码分析:

def getText():                                    #定义获取文本函数
with open("suc/Nixon.txt","r") as file: #使用with as 关键字打开文件,open()函数
#中“ ”内容,为打开文本的路径,需要使用自己
#的路径,否则报错。
text=file.read()
text = text.lower() #对文本进行小写转换
for ch in ",.;?-:\'": #对文本中的符号进行检索替换
text = text.replace(ch, " ")
return text

def wordFreq(text,topn): #定义字符统计函数
words = text.split() #使用split()函数将字符串切片并转换为列表
counts = {}.fromkeys(words,0) #定义计数字典
for word in words:
counts[word] = counts[word] + 1
excludes = {'the','and','to','of','a','be','from','in','for'}
for word in excludes:
del(counts[word])
items = list(counts.items()) #将counts字典的items转换为列表,便于排序
items.sort(key=lambda x:x[1], reverse=True) #列表中使用lambda匿名函数排序
return items[:topn]

def writetext(list1): #定义写入文件函数
with open("suc/tongji.txt","w") as file2: #同上文打开文本,需要修改打开模式,“w”为写入
for word,freq in list1:
file2.write("{}\t{}\n".format(word, freq))

text = getText() #调用函数
list1=wordFreq(text,20)
writetext(list1)

实验运行截图:

python学习-第三方库综合程序设计实验报告_第三方库

 

python学习-第三方库综合程序设计实验报告_python_02

实验2-统计《红楼梦》中人物出现的频率

2. 《红楼梦》,中国​​四大名著​​​之一,是一部具有世界影响力的人情小说、中国封建社会的百科全书、传统文化的集大成者。小说以贾、史、王、薛​​四大家族​​​的兴衰为背景,以富贵公子​​贾宝玉​​​为视角,以贾宝玉与​​林黛玉​​​、​​薛宝钗​​的爱情婚姻悲剧为主线,描绘了一些闺阁佳人的人生百态,展现了真正的人性美和悲剧美,是一部从各个角度展现女性美以及中国古代社会百态的史诗性著作。《红楼梦》篇幅巨大、出场人物繁多,本实验要求编写程序,统计《红楼梦》小说中的关键人物的出场次数。要求:输入电子版《红楼梦》文本,输出出场率最高的10个人物。

实验分析:本次实验中需要同学输入电子版的《红楼梦》文本,及使用py文件操作打开文本文件。需要输出出场最高的10个关键人物,则需要使用py第三方模块jieba完成,第三方库的安装存在问题,移步我另一篇关于py第三库导入的文章。

实验重难点:Python第三方库jieba的引入,用jieba对文本进行分词,print()函数的格式化输出。

实验源码分析:

import jieba                            #导入第三方库jieba
#使用open()函数打开文本,路径需要更改为自己存储该文本文件的路径,字符编码设置为UTF-8
txt = open("suc/红楼梦.txt", "r", encoding='utf-8').read()
#调用jieba库中的lcut()函数,函数规则为精准匹配模式,返回值是一个列表
words = jieba.lcut(txt)
counts = {} #定义统计字典
#定义筛选无关字段的字典
excludes = {"什么", "一个", "我们", "你们", "如今", "说道", "知道",
"姑娘", "起来","这里","出来","众人","那里","奶奶","自己","太太"
,"一面","只见","两个","没有","怎么","不是","不知","这个","听见"
,"这样","就是","东西","只见","告诉","袭人","回来","只是","大家"
,"进来","咱们"}
for word in words:
#如果字符长度为1,或者在筛选字典中,则跳过,不统计
if len(word) == 1 or (word in excludes):
continue
else:
counts[word] = counts.get(word,0) + 1
items = list(counts.items()) #用counts统计字典的元素转换为列表,便于进行排序
items.sort(key=lambda x:x[1], reverse=True) #调用列表sort()函数,用匿名函数作为参数
for i in range(10):
word, count = items[i] #这里用到了py切片的思想,,可以理解为split()函数
print ("{}:{:<10}{:>5}".format(i+1,word, count)) #格式化输出

实验运行截图:

python学习-第三方库综合程序设计实验报告_python_03

实验3-20大词云

3.本实验要求:利用wordcloud库绘制-20大工作报告-文本词云。

实验分析:本实验需要基于工作报告生成词云图片,要求同学具备py文件的相关知识。将字符出现频率统计转换为词云形式展示,需要使用py的第三方库wordcroud,如果导入第三方库存在问题,可以移步我另一篇关于py第三方库引入的文章

实验重难点:Py第三方库wordcloud的导入和使用,文件文本的读取

实验源码分析:

import wordcloud                  #引入第三方wordcloud库
#字体的路径,需要更改为你自己电脑上安装过的字体路径
font = 'C:\Windows\Fonts\simsun.ttc'
#打开生成词云的文本,打开的路径需要更改为自己存放的位置
file =open("suc/20大报告.txt", "r" )
string = str(file.read())
#这里是直接打开的文件,没用使用with as关键字,需要自行关闭文件
file.close()
#调用wordcloud库的WouldCloud函数,设置词云参数
w = wordcloud.WordCloud(font_path=font,max_words=500,
max_font_size=40,background_color='white')
w.generate(string) #生成词云
w.to_file('suc/20大词云.jpg') #设置词云输出位置

实验运行截图:

python学习-第三方库综合程序设计实验报告_python_04


本次技术分享就结束了,喜欢就点赞收藏吧!!!持续更新中~~~

标签:文本,word,python,text,py,实验,程序设计,counts,实验报告
From: https://blog.51cto.com/u_15910342/6108233

相关文章