python小练习04

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

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,关闭文件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一个使用 g++ 模块化编译的 hello world 示例( Ubuntu 20.04 )

1. 确认 ubuntu 版本&#xff1a; 2. 文件夹结构&#xff1a; 3. 各个文件内容&#xff1a; 3.1. myadd.cpp&#xff1a; #include<iostream> using namespace std; int add_xxx( int a,int b ){int result a b;cout << a << " " << …

责任大,权力小:项目经理如何有效管理项目

成为项目经理&#xff0c;我们才会发现这份工作远非想象中那般轻松。在大多数企业中&#xff0c;项目经理更像是小团队中的舵手&#xff0c;需要在有限的权力和资源下&#xff0c;承担起巨大的责任&#xff0c;甚至不惜牺牲个人时间&#xff0c;加班至深夜。责任重大而权力有限…

解析MySQL的数据类型:理解每种类型及其应用

MySQL是一种流行的关系型数据库管理系统&#xff0c;被广泛应用于Web应用开发中。在数据库设计的过程中&#xff0c;选择合适的数据类型至关重要&#xff0c;因为它不仅影响存储效率和数据完整性&#xff0c;还影响数据库操作的性能和查询速度。本文将详细介绍MySQL支持的各种数…

职业技能大赛引领下人工智能专业实训教学的改革研究

在新时代背景下&#xff0c;人工智能&#xff08;AI&#xff09;作为科技发展的前沿领域&#xff0c;正以前所未有的速度影响着社会经济的各个方面&#xff0c;对高素质应用型AI专业人才的需求日益迫切。职业技能大赛作为检验和提升学生实践能力的重要平台&#xff0c;对于促进…

linux内存屏障

why? 为什么要有内存屏障&#xff0c;内存屏障主要解决什么问题 What? 内存屏障都有哪些 How? 内存屏障如何使用 本篇文章主要解决前两个问题 一、为什么要有内存屏障 我们都知道计算机运算任务需要CPU和内存相互配合共同完成&#xff0c;其中CPU负责逻辑计算&#xf…

HUAWEI MPLS 静态配置和动态LDP配置

MPLS(Multi-Protocol Label Switching&#xff0c;多协议标签交换技术)技术的出现&#xff0c;极大地推动了互联网的发展和应用。例如&#xff1a;利用MPLS技术&#xff0c;可以有效而灵活地部署VPN(Virtual Private Network&#xff0c;虚拟专用网)&#xff0c;TE(Traffic Eng…

将iStoreOS部署到VMware ESXi变成路由器

正文共&#xff1a;888 字 19 图&#xff0c;预估阅读时间&#xff1a;1 分钟 前面把iStoreOS部署到了VMware workstation上&#xff08;将iStoreOS部署到VMware Workstation&#xff09;。如果想把iStoreOS直接部署到ESXi上&#xff0c;你会发现转换镜像不能直接生成OVF或者OV…

巴比达内网穿透:重塑企业级数据通信的高效与安全边界

在当今数据驱动的时代&#xff0c;企业对于高效、安全、低延迟的数据传输需求日益迫切。巴比达&#xff0c;作为企业级内网穿透领域的佼佼者&#xff0c;凭借其自主研发的第九代核心引擎——WanGooe Tunnel&#xff0c;为企业带来了前所未有的通信体验。通过一系列技术创新与优…

亚马逊云科技AWS免费大热AI应用开发证书(含题库、开卷)

亚马逊云科技AWS官方生成式AI免费证书来了&#xff01;内含免费AI基础课程&#xff01;快速掌握AWS的前沿AI技术&#xff0c;后端开发程序员也可以速成AI专家&#xff0c;了解当下最&#x1f525;的AWS AI架构解决方案&#xff01; 本证书内容包括AWS上的AI基础知识&#xff0c…

强化学习-5 策略梯度、Actor-Critic 算法

文章目录 1 基于价值&#xff08; value-based \text{value-based} value-based &#xff09;算法的缺点2 策略梯度算法2.1 解释2.1.1 分母和分子相消2.1.2 对数函数的导数2.1.3 组合公式2.1.4 总结 3 REINFORCE算法4 策略梯度推导进阶4.1 平稳分布4.2 基于平稳分布的策略梯度…

家用洗地机什么牌子好?四款公认品牌好的机型推荐

每个人都希望自己的家里面能够干干净净&#xff0c;就算不是一尘不染&#xff0c;也至少应该是整洁的&#xff0c;但是在这个快节奏的大环境下&#xff0c;做清洁对于人们来说&#xff0c;不是没时间&#xff0c;就是太累了。正当此时&#xff0c;一款造福懒人的神器——家用洗…

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

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

python-数据容器对比总结

基于各类数据容器的特点&#xff0c;它们的应用场景如下&#xff1a; 数据容器的通用操作 - 遍历 数据容器的通用统计功能 容器的通用转换功能 容器通用排序功能 容器通用功能总览

GIT - 一条命令把项目更新到远程仓库

前言 阅读本文大概需要1分钟 说明 更新项目到远程仓库只需要执行一条命令&#xff0c;相当的简便 步骤 第一步 编辑配置文件 vim ~/.bash_profile第二步 写入配置文件 gsh() {local msg"${1:-ADD COMMIT PUSH}"git add . && git commit -m "$m…

市场布局企业增加 光场显示技术商业化进程将加快

市场布局企业增加 光场显示技术商业化进程将加快 光场显示技术是一种新型三维&#xff08;3D&#xff09;显示技术&#xff0c;是利用特殊显示和控光器件重构3D空间光场信息&#xff0c;实现3D动态显示。光场即光线在空间中的分布。   目前3D显示可分为真3D显示、助视3D显示、…

Kubernetes 离线安装的坑我采了

Kubernetes 离线安装的坑我采了 一、Error from server: Get "https://xx.xx.xx.xx:10250/containerLogs/kube-system/calico-node-8dnvs/calico-node": tls: failed to verify certificate: x509: certificate signed by unknown authority二、calico 或 pod 启动正…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(七)-shell语法(5)

shell语法的一些知识和练习&#xff0c;可以当作笔记收藏一下&#xff01;&#xff01; 文章目录 前言 一、shell 二、shell语法 1.文件重定向 2.引入外部脚本 3.作业 总结 前言 shell语法的一些知识和练习&#xff0c;可以当作笔记收藏一下&#xff01;&#xff01; 提示&…

CISSP是什么?值得考吗?

近期&#xff0c;国际信息系统安全认证联盟(ISC)宣布自2024年2月12日起&#xff0c;中国信息安全专业人员认证(CISSP)的中文考试将采用计算机自适应测试(CAT)形式进行。 计算机化自适应测试(CAT)根据考生答题情况动态调整后续试题的难度和类型&#xff0c;以更准确地衡量个人能…

2024最新ComfyUI文生图详解教程!

前言 leetcode&#xff0c;16.25. LRU 缓存 设计和构建一个“最近最少使用”缓存&#xff0c;该缓存会删除最近最少使用的项目。 缓存应该从键映射到值(允许你插入和检索特定键对应的值)&#xff0c;并在初始化时指定最大容量。当缓存被填满时&#xff0c;它应该删除最近最少…

网络基础:EIGRP

EIGRP&#xff08;Enhanced Interior Gateway Routing Protocol&#xff09;是由思科开发的一种高级距离矢量路由协议&#xff0c;结合了距离矢量和链路状态路由协议的优点&#xff1b;EIGRP具有快速收敛、高效带宽利用、负载均衡等特点&#xff0c;适用于各种规模的网络。EIGR…