python小练习04

news2024/11/24 17:20:21

三国演义词频统计与词云图绘制

import jieba
import wordcloud
def analysis():
    txt = open("三国演义.txt",'r',encoding='utf-8').read()
    words = jieba.lcut(txt)#精确模式
    counts = {}
    for word in words:
        if len(word) == 1:
            continue
        elif word =="诸葛亮" or word == "孔明曰":
            rword = "孔明"
        elif word == "关公" or word == "云长":
            rword = "关羽"
        elif word == "玄德" or word == "玄德曰":
            rword = "刘备"
        elif word == "孟德" or word == "丞相曰":
            rword = "曹操"
        elif word == "翼德" or word == "翼德曰":
            rword = "张飞"
        else:
            rword =word
        counts[rword] = counts.get(rword,0)+1
    items = list(counts.items())
    items.sort(key=lambda x :x[1],reverse=True)
    txt1 = ''
    for i in range(10):
        word,count = items[i]#注意这是一个二维列表
        print("{0:<10}{1:>5}".format(word,count))

analysis()
# GovRptWordCloudV1.py
f = open("三国演义.txt", "r", encoding="utf-8")
txt = f.read()
f.close()
ls = jieba.lcut(txt)  # 分词
length = len(ls)
number = 0
for i in range(length):  # 筛选一个字的分词并去掉它
    if len(ls[i - number]) == 1:
        del ls[i - number]
        number += 1
    else:
        continue
ls = " ".join(ls)  # 添加空格分隔符
w = wordcloud.WordCloud(font_path="msyh.ttc", \
                        width=1000, \
                        height=700, \
                        background_color="white", \
                        max_words=100)
w.generate(ls)
w.to_file("三国演义.png")

分析:主要功能是对《三国演义》文本进行中文分词和词频统计,并生成词云图。以下是代码的主要步骤:

import jieba 和 import wordcloud:引入了jieba库用于中文分词,wordcloud库用于生成词云图片。

def analysis() 定义了一个函数,该函数执行以下操作:

a. 读取文件 “三国演义.txt” 并使用UTF-8编码。

b. 使用jieba库的 lcut() 函数对文本进行精确模式的分词,并将结果存储在变量 words 中。

c. 遍历分词结果,对特定人物名字进行替换(如诸葛亮、曹操等),并将计数存入字典 counts。

d. 将字典中的词频按降序排序,并打印出前10个最常见的词语及其频率。

在函数外部,打开文本文件,再次分词并筛选掉单个字符的词语,然后使用 WordCloud 类创建词云图,设置参数后保存为 “三国演义.png” 图片。

雷达图绘制

mport numpy as np
import matplotlib.pyplot as plt
import matplotlib
labels = np.array(['X','KDA','Survival','Damage percentage','Participation rate','Damage_conversion_rate','Injury proportion','Average damage distribution'])
nAttr = 7
data = np.array([7.5,5.0,8.0,6.5,9.0,7.0,5.5])
angles = np.linspace(0,2 * np.pi,nAttr,endpoint = False)
data = np.concatenate((data,[data[0]]))
angles = np.concatenate((angles,[angles[0]]))
fig = plt.figure(facecolor = "white")
plt.subplot(111,polar = True)
plt.plot(angles,data,'bo-',color = 'b',linewidth = 2)
plt.fill(angles,data,facecolor = 'b',alpha = 0.25)
plt.thetagrids(angles*180/np.pi,labels)
plt.grid(True)
plt.savefig('6.2.jpg')
plt.show()

分析:

import numpy as np 和 import matplotlib.pyplot as plt:导入了numpy和matplotlib.pyplot模块,numpy用于数值计算,matplotlib.pyplot用于创建图形。

import matplotlib:这个导入通常是为了使用matplotlib的全部功能,包括颜色、字体等配置。

Labels=np.array(['X','KDA','Survival','Damagepercentage','Participationrate','Damage_conversion_rate','Injuryproportion','Averagedamagedistribution']):定义了一个包含数据标签的数组,表示饼图的各个部分。

nAttr = 7:设置饼图有7个部分。

data = np.array([7.5,5.0,8.0,6.5,9.0,7.0,5.5]):定义了每个部分的数据值。

angles = np.linspace(0, 2 * np.pi, nAttr, endpoint=False):生成一个从0到2π的等分数组,用作饼图的角度。

data = np.concatenate((data,[data])) 和 angles = np.concatenate((angles,[angles])):添加一个完整的圈作为饼图的开始和结束,这样看起来更自然。

fig = plt.figure(facecolor="white"):创建一个新的图形窗口,背景色设为白色。

plt.subplot(111, polar=True):设置子图类型为极坐标,创建一个饼图。

plt.plot(angles,data,'bo-',color='b', linewidth=2):绘制实际的饼图,蓝色圆点连接线。

plt.fill(angles,data,facecolor='b',alpha=0.25):填充饼图区域,带有一定的透明度。

plt.thetagrids(angles * 180 / np.pi, labels):在角度上添加标签,将角度单位从弧度转换为度数。

plt.grid(True):添加网格线。

plt.savefig('6.2.jpg'):保存图像到名为"6.2.jpg"的文件。

plt.show():最后显示创建的图形。

爬取百度翻译结果

题目:

用python实现输入英文单词,爬取百度翻译对此单词的翻译结果并输出

示例:

import requests

post_url = 'https://fanyi.baidu.com/sug'
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"}

word = input('请输入需要翻译的英文单词:')
data = {'kw': word}
response = requests.post(post_url, data, headers=header)

dic_obj = response.json()
ls = dic_obj['data']
print("{}的翻译结果为:".format(word))
for i in range(len(ls)):
    dict1 = ls[i]
    del dict1['k']
    itemb = dict1.values()
    for value in itemb:
        print(value)

分析:使用了requests模块来实现的功能是发送一个POST请求到百度翻译的API接口(fanyi.baidu.com),post_url 是你想要发送请求的目标网址,这里是百度翻译的搜索服务地址。header 定义了一个HTTP头部,包含User-Agent信息,模拟浏览器客户端以避免被服务端识别为机器人并限制访问。

word 是用户输入的需要翻译的单词。data 是要发送的数据,这里包含关键字kw及其值。response = requests.post(post_url, data, headers=header) 这行代码执行实际的POST请求,并将结果存储在response变量中。response.json() 将接收到的HTTP响应转化为JSON格式的数据。dic_obj['data'] 是从JSON数据中提取出的翻译建议列表。

循环遍历ls(list of dictionaries),去掉每个字典中的键’k’,然后打印剩余的值(翻译结果)。

爬取豆瓣电影网址Top250的前25电影的各种信息并写入csv

将其电影名称、电影信息以及电影评分写入名为Top25.csv文件中,

电影名称,电影信息以及电影评分三者用“,”隔开(csv文件格式)

示例:

#豆瓣前25电影:名称+时间+国家+类型+评分
import requests
from bs4 import BeautifulSoup

f1 = open("top25++.csv",'w+',encoding='utf-8')
head = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"}#把爬虫程序伪装成用户
response =  requests.get("http://movie.douban.com/top250",headers= head )
html = response.text
soup = BeautifulSoup(html,"html.parser")
items = soup.find_all('div', class_='item')
articles = []
for item in items:
    title = item.find('span', class_='title').text
    actors = item.find('div', class_='bd').p.text.split()
    rating = item.find('span', class_='rating_num').text
    for i in range(len(actors)):
        if ord('1') <= ord(actors[i][0]) <= ord('9'):
            actors = actors[i::]
            break
        else:
            continue
    year = actors[0]
    flag1 = actors.index('/')
    flag2 = actors.index('/',flag1+1,-1)
    if flag1+2 == flag2:
        country = actors[flag1+1]
    else:
        country = actors[flag1+1:flag2-1]
    types = actors[flag2+1::]
    information = str(title)+','+str(year)+','+str(''.join(country))+','+str(''.join(types))+','+str(rating)
    articles.append(information+'\n')
f1.writelines(articles)
f1.close()

分析:定义了请求头(User-Agent),用来模拟浏览器访问,防止被网站识别为爬虫。使用requests库发送GET请求到豆瓣电影Top 250的URL,并获取响应内容。

使用BeautifulSoup库解析HTML响应,找到包含电影信息的<div>元素,它们具有class='item'的CSS选择器。遍历每个电影条目,提取电影标题、演员(包括年份、国家和类型)、评分等信息。标题:使用span元素的class_='title'查找。年份、国家和类型:通过查找div元素内的文本并根据特定字符分割来提取。评分:使用span元素的class_='rating_num'查找。将提取的信息整理成字符串,格式化为CSV行,然后添加到articles列表中。最后将所有文章写入CSV文件f1,关闭文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1888680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

环保管理新篇章:智慧环保引领制造业走向绿色未来

环保领域作为当代社会焦点之一&#xff0c;其重要性不言而喻&#xff0c;直接关系到人类生存环境的可持续发展&#xff0c;因此吸引了政府、企业及社会各界的深切关注。然而&#xff0c;在环保行业蓬勃发展的背后&#xff0c;亦浮现出一系列亟待解决的痛点&#xff1a;融资渠道…

PyTorch MNIST手写体识别:SwanLab可视化训练

MNIST手写体识别是深度学习、CV的“Hello World”&#xff0c;无数人从这个任务入门&#xff0c;进入深度学习的世界&#xff5e; 进阶请看&#xff1a;PyTorch猫狗分类 这篇文章我将带大家使用SwanLab&#xff08;训练可视化&#xff09;、PyTorch&#xff08;深度学习框架&…

Hive常用的内置函数

文章目录 聚合类1.指定列值的数目2.指定列值求和3.最大值4.最小值5.平均值6.中位数函数7.分位数函数 数值类1.取整函数Round(a)2.指定精度取整ROUND(double a,int b)3.向上取整FLOOR()4.向下取整CEIL()5.随机数 rand()6.绝对值函数 日期类获取当前日期获取当前时间戳日期前后日…

【Java环境配置过程详解(包括IDEA配置Java)】

目录 一、JDK下载安装 1. 官网下载JDK 2. 本地安装JDK 3. 配置环境变量 4. 验证是否安装成功 ​编辑二、IDEA进行安装下载 1. 官网下载 IDEA 2、IDEA进行Java开发 1. 创建Java项目 2. 程序测试 一、JDK下载安装 1. 官网下载JDK 1&#xff09;官网链接: https://www.o…

IT行业入门,如何假期逆袭,实现抢跑

目录 前言 1.IT行业领域分类 2.基础课程预习指南 3.技术学习路线 4.学习资源推荐 结束语 前言 IT&#xff08;信息技术&#xff09;行业是一个非常广泛和多样化的领域&#xff0c;它包括了许多不同的专业领域和职业路径。如果要进军IT行业&#xff0c;我们应该要明确自己…

keyclock实现三方登录

公司希望我把公司的keycloak作为新项目的一种第三方登录方式时&#xff0c;就像微信&#xff0c;google&#xff0c;github&#xff0c;使用keycloak上的账户资源 因此&#xff0c;先需要跟公司keyclock管理员联系&#xff0c;让他把各个端点url&#xff0c;keycloak颁发的cli…

MATLAB将两个折线图画在一个图里

界面如图 输入行数和列数&#xff0c;点击开始填入数据&#xff0c;其中第一列为x值&#xff0c;后面几列&#xff0c;每一列都是y坐标值&#xff0c;填好后点击画在同一张图里即可。点击置零就把所有数变成0&#xff0c;另外也可以选择节点样式。 .mlapp格式的文件如下 夸克…

AI时代的产品经理的成长指南_pdca循环理论制定ai学习成长计划

一、人人不都是产品经理 大多数人听到“产品经理”这个词&#xff0c;总会联想到“人人都是产品经理”这句话。但实际上产品经理这个岗位并没有那么简单。 用一句话概括产品经理的职责就是“帮助团队交付正确产品给用户的人”。也就是说&#xff0c;产品经理要能凝聚团队的力…

归并排序-MergeSort (C语言详解)

目录 前言归并排序的思想归并排序的递归法归并排序的非递归法归并排序的时间复杂度与适用场景总结 前言 好久不见, 前面我们了解到了快速排序, 那么本篇旨在介绍另外一种排序, 它和快速排序的思想雷同, 但又有区别, 这就是归并排序, 如下图, 我们对比快速排序与归并排序. 本…

在线JSON可视化工具--改进

先前发布了JSON格式化可视化在线工具&#xff0c;提供图形化界面显示结构关系功能&#xff0c;并提供JSON快速格式化、JSON压缩、快捷复制、下载导出、对存在语法错误的地方能明确显示&#xff0c;而且还支持全屏&#xff0c;极大扩大视野区域。 在线JSON格式化可视化工具 但…

[Labview] 二维数组写入表格

就一个二维数组写表&#xff0c;CSDN天天让我改进质量 简直是迫害完美主义 天知道Labview有什么思路好写&#xff0c;就一个破连连看(ˉ▽ˉ&#xff1b;)... 随便写点什么碎碎念占字数好了

Linux源码阅读笔记09-进程NICE案例分析1

task_nice task_nice函数功能&#xff1a;获取某个进程的nice值&#xff0c;其中nice值为进程的优先级&#xff0c;与静态优先级有关&#xff08;nicestatic_prio-120&#xff09;。 nice的取值范围&#xff1a;-20 ~ 19 内核源码 根据内核的注释可以知道&#xff1a;task_n…

时间12小时和24时转换方法

24小时时间转为12小时制 function convertTo12Hour(time24h){let [hours, minutes] time24h.split(:);let modifier 上午;if (parseInt(hours, 10) > 12) {modifier 下午;hours (parseInt(hours, 10) - 12).toString();}if (parseInt(hours, 10) 12) {modifier 下午;}…

Arduino 与树莓派常用的 IMU 传感器

惯性测量单元&#xff08;IMU&#xff09;是一种高度集成的传感器系统&#xff0c;广泛应用于需要高精度运动和姿态信息的领域。某些高精度要求下&#xff0c;还需要辅以温度、气压等其他传感器信息。 一、组成与功能 1. 组成 9 轴 IMU 由三个主要部分组成&#xff1a;3 轴加…

系留无人机+自组网+单兵图传:低空集群组网指挥系统技术详解

低空无人机集群的控制、调度、信息回传需要有高度可靠和稳定的无线通信链路来保障。我国发达的公网基础设施为上述应用创造了良好的条件&#xff0c;但低空应用必须要考虑到在极端情况下公网瘫痪造成的通信链路中断带来的影响&#xff0c;因此有必要在公网之外&#xff0c;寻求…

C语言----文件操作

1.为什么使用文件&#xff1f; 如果没有⽂件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进⾏持久化…

Vue85-Vuex的求和案例

一、需求 二、开发 2-1、index.js中vuex的代码 注意&#xff1a; 书写格式&#xff1a;actions中的函数名用小写&#xff01;mutations中的函数名&#xff0c;用大写。 注意&#xff1a; 2-2、组件count.vue中的代码 2-3、代码优化

oracle数据库无法open,报“ORA-01113 file 1 needs media recovery”错误,教你用“六脉神剑”来开库

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享。在系统…

Linux:文件系统与日志分析

一、block与inode 1.1、概述 文件是存储在硬盘上的&#xff0c;硬盘的最小存储单位叫做“扇区”(sector)&#xff0c;每个扇区存储512字节。 一般连续八个扇区组成一个"块”(block)&#xff0c;一个块是4K大小&#xff0c;是文件存取的最小单位。 文件数据包括实际数据…

如何在 Odoo 16 中通过函数创建和管理自定义字段

Odoo 几乎为每种功能提供了每种类型的字段。通常&#xff0c;我们为字段定义一个类定义并将其包含在模型中。但是&#xff0c;在某些业务实例中&#xff0c;我们可能需要通过添加新字段从用户界面本身修改模型。在本博客中&#xff0c;让我们研究如何定义自定义字段在视图中的位…