# python_01 **Repository Path**: desiy/python_01 ## Basic Information - **Project Name**: python_01 - **Description**: login - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 大数据导论试卷 #### 介绍 首先我会将此题分为两个步骤完成。第一步就是找出高频词汇(2字词汇);第二步绘图();在做第一步之前我们需要使用python的jieba库:优秀的中文分词组件。支持繁体分词、自定义词典。我选择读取的文本是西游记。首先读取文本文件,我们在第十章学到过:with open(file) as name:** = name.read(),这里同样使用。不过我们需要加上编码格式encoding="utf-8"。接着我们使用jieba中的方法lcut对文本进行精确分词,再自定义一个存储词语及其出现次数的容器,最后遍历。需要注意的是我们要排除单个字。items.sort(key=lambda x: x[1], reverse=True)这个语句中的sort函数用于对原列表就行排序,如果指定参数,则使用比较函数指定的比较函数。reverse=True是降序的意思,反之False为升序。这里的难点是key=lambda x: x[1],这个lambda是一个隐函数,后面的x: x可以自定义两个一样的字母,[0]按照第一维排序,[1]按照第二维排序,[2]按照第三维排序。我们这里排序是根据该词语出现的次数就行排序,我们输出的结果格式是(word,count),count就是次数。 print("{0:<5}{1:>5}".format(word, count))这个是format方法的bai格式控制。首先:'我的{0}叫{1}'.format(name,jack),大括号里的数字表示的是位置,也就是0对应的name,1对应的jack。同理,题中0对应的是word,1对应的是count。其次,冒号是引导符,后面跟的是格式控制方法。<表示左对齐,>表示右对齐,数字表示宽度。同理,题中<10表示左对齐,并占10个位置,>5表示右对齐,占5个位置。运行后报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 0——Python 编码中编码解码的问题,我这个错误就是‘utf-8’不能解码位置0的那个字节(0xa1),也就是这个字节超出了utf-8的表示范围了,我们这里将utf-8换成gb18030即可。这样我们就可以获得文本前十五的高频词汇。 最后就是绘图。我们结合第十七章练习完成。练习中是从一个json文件中获取,那么我们可不可以直接使用上一步生成的数据来生成图表呢?练习中我们从json文件中通过遍历取的的值作为图表的参数,这里我们直接省去了json文件遍历,直接使用数据作为图表的参数。