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

目录

实验四:  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)

实验运行截图:

 

实验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))    #格式化输出

实验运行截图:

实验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')      #设置词云输出位置

实验运行截图:

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

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值