Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

对于动漫爱好者来说,海贼王、火影、死神三大动漫神作你肯定肯定不陌生了。小编身边很多的同事仍然深爱着这些经典神作,可见“中毒”至深。今天小编利用Python大法带大家分析一下这些神作,看看这些神作到底在讲些神马。

Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

人生苦短,我用Python。小编利用Python网络爬虫爬取了豆瓣网,将网站上关于这三部动漫的评论全部抓取下来,之后通过Python的第三方库jieba分词进行词频统计和分析,最后通过matplotlib库和wordcloud库将关键词制作成词云进行可视化展示。

词云是神魔?”词云”这个概念由美国西北大学新闻学副教授、新媒体专业主任里奇·戈登(Rich Gordon)于近日提出。”词云”就是对网络文本中出现频率较高的”关键词”予以视觉上的突出,形成”关键词云层”或”关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。

话不多说,直接上图,下图是《海贼王》的豆瓣评论词云可视化展示图。

Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

《海贼王》豆瓣评论词云

对于《海贼王》来说,世界,梦想,搞笑,感动,冒险,自由等关键词是大家对这部热血动漫的评价。在人物展现了,路飞、索隆和艾斯榜上有名。路飞这个贯穿这个海贼王的名字毫无疑问出现的次数最多,接下来是大剑豪索隆和死去的艾斯。

路飞是草帽海贼团船长,由于他的标志性特征是一顶草帽,因此常被直接称呼为草帽小子或草帽路飞,他的梦想是找到传说中的One Piece,成为海贼王。

Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

《海贼王》人物—路飞

索隆是草帽海贼团第一位伙伴,职位是剑士,团内三主力之一,11位超新星的其中一人,悬赏金额在香波第诸岛排行第10名,特征是绿色头发(短发)、黑色的头巾(大多缠在左手臂上)、绿色的腰带(肚兜)和左耳配戴了三个耳环。

Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

《海贼王》人物—索隆

艾斯是日本动漫《海贼王》里的虚构人物,统称为“火拳”,是主角蒙奇·D·路飞的义兄,已逝。他的形象是黑发,常戴着一顶橘色的帽子,在帽子上有奸笑和难过这两种表情图案,而且帽子的绳子绑着一个骷髅头的牌子,是白胡子海贼团第二队队长,实力不凡。曾被一度邀请加入七武海。后被黑胡子击败,并且交与海军,关押在海底大监狱。后因为保护路飞用身体去挡海军大将赤犬的岩浆拳,结果被贯穿了身体。内脏也被烧伤,船医通过检查发现其内脏已被烧坏无法医治,因伤势过重死亡。

Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

《海贼王》人物—艾斯

下图是《火影忍者》的豆瓣评论词云可视化展示图。

Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

《火影忍者》豆瓣评论词云

毋庸置疑,喜欢《火影忍者》的人不枚胜举,大家对这部动漫的喜爱度和评价也较高。从词云可视化来看,原创、剧情、拖沓、越来越、太长等相对负面的词有蛮多的。究其原因,那就是剧情拖沓,到后面有让人看不下去的感觉,甚至给人一种烂尾的感觉。但是总体上来说,小伙伴们对该剧的评价还是偏向于喜欢的~~~

在人物方面,主人公鸣人和他的好基友佐助很明显的出现在词云中。鸣人是日本动漫《火影忍者》的主角。火之国木叶隐村的忍者,四代目火影波风水门和二代九尾人柱力漩涡玖辛奈之子,六道仙人次子阿修罗转世。最后他成功控制了体内的九尾查克拉,并在第四次忍界大战中与佐助携手抗敌,成为了拯救世界的英雄。最后,鸣人终于实现自己的梦想,成为了火影。

Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

《火影忍者》人物—鸣人

佐助是日本动漫《火影忍者》中的第二男主角。火之国木叶隐村宇智波一族的天才忍者,六道仙人长子因陀罗的转世。后来战争结束后,佐助因使世界和平的道路和鸣人不同,而在终结之谷与鸣人进行了宿命的一战,两败俱伤 。佐助最终被鸣人所感动,认同了鸣人使世界和平的道路,并重新成为木叶的一员。之后为了更加看清现在的世界开始了独自一人的赎罪之旅。

Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

《火影忍者》人物—佐助

下图是《死神》的豆瓣评论词云可视化展示图。

Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

《死神》豆瓣评论词云

《死神》,看到这个名字都觉得毛骨悚然,好怕怕的赶脚。死神是日本心理悬疑推理漫画《Death Note》(《死亡笔记》)中的角色。死神拥有死亡笔记,名字被写在这本笔记上的人就会死。从词云可视化上来看,剧情、动画、漫画、热血、原创、完结、蓝染、尸魂界等元素强调的比较多。

在人物方面,蓝染鹤立鸡群。蓝染是死神当中幕后最大的BOSS,拥有很强的力量,想成为改变整个世界的至高无上的神,不相信任何人,除了银。因为他认为银跟他一样,只有银才了解他。他想拥有力量,更强的力量。他和市丸银既是知己,又是唯一了解彼此的人,市丸银跟随他也是有目的的。只不过起初蓝染不知道罢了 不过,蓝染的死跟市丸银是没有关系的,但也不能说是绝对没有关系的,因为只有银比任何人都了解蓝染的,蓝染目前在TV版动画中还没有死亡。在漫画连载中仅仅只是被封印了,也没有死亡。

Python大佬用词云可视化带你分析海贼王、火影和死神三大经典动漫

《死神》人物—蓝染

通过上面的词云可视化展示,小编相信你肯定知道了《海贼王》、《火影忍者》和《死神》三步巨作想表达的主旨了。不难发现,这三部动漫巨著都是热血动漫,从评论中关于热血的认同度占有很大的比重。果不其然,在我们观看这三部神剧的时候,也确实感受到了热血,里面的人物一言不合就干架,正所谓不热血,不少年~~~

以上的分析仅代表小编个人的看法,欢迎小伙伴们拍砖~~~

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

前几天小编连续写了四篇关于Python选择器的文章,分别用正则表达式BeautifulSoupXpathCSS选择器分别抓取京东网的商品信息。今天小编来给大家总结一下这四个选择器,让大家更加深刻的理解和熟悉Python选择器。

一、正则表达式

正则表达式为我们提供了抓取数据的快捷方式。虽然该正则表达式更容易适应未来变化,但又存在难以构造、可读性差的问题。当在爬京东网的时候,正则表达式如下图所示:

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

利用正则表达式实现对目标信息的精准采集

此外 ,我们都知道,网页时常会产生变更,导致网页中会发生一些微小的布局变化时,此时也会使得之前写好的正则表达式无法满足需求,而且还不太好调试。当需要匹配的内容有很多的时候,使用正则表达式提取目标信息会导致程序运行的速度减慢,需要消耗更多内存。

二、BeautifulSoup

BeautifulSoup是一个非常流行的 Pyhon 模块。该模块可以解析网页,并提供定位内容的便捷接口。通过’pip install beautifulsoup4’就可以实现该模块的安装了。

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

利用美丽的汤去提取目标信息

使用 BeautifulSoup的第一步是将己下载的 HTML 内容解析为 soup文档。由 于大多 数网 页都不具备良好的HTML 格式,因此BeautifulSoup需要对实际格式进行确定。BeautifulSoup能够正确解析缺失的引号并闭合标签,此外还会添加<html >和<body>标签使其成为完整的HTML文档。通常使用find() 和find_all()方法来定位我们需要的元素。如果你想了解BeautifulSoup全部方法和参数,可以查阅BeautifulSoup的官方文档。虽然BeautifulSoup在代码的理解上比正则表达式要复杂一些,但是其更加容易构造和理解。

三、Lxml

Lxml模块使用 C语言编写,其解析速度比 BeautiflSoup更快,而且其安装过程也更为复杂,在此小编就不赘述啦。XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

Xpath

使用 lxml 模块的第一步和BeautifulSoup一样,也是将有可能不合法的HTML 解析为 统一格式。 虽然Lxml可以正确解析属性两侧缺失的引号,并闭合标签,不过该模块没有额外添加<html >和<body>标签 。

在线复制Xpath表达式可以很方便的复制Xpath表达式。但是通过该方法得到的Xpath表达式放在程序中一般不能用,而且长的没法看。所以Xpath表达式一般还是要自己亲自上手。

四、CSS

CSS选择器表示选择元素所使用 的模式。BeautifulSoup整合了CSS选择器的语法和自身方便使用API。在网络爬虫的开发过程中,对于熟悉CSS选择器语法的人,使用CSS选择器是个非常方便的方法。

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

CSS选择器

下面是一些常用的选择器示例。

  • 选择所 有标签: *
  • 选择<a>标 签: a
  • 选择所有class=”link” 的元素: .l in k
  • 选择 class=”link” 的<a>标签: a.link
  • 选择 id= ” home ” 的<a>标签: a Jhome
  • 选择父元素为<a>标签的所有< span>子标签: a > span
  • 选择<a>标签内部的所有<span>标签: a span
  • 选择title属性为” Home ” 的所有<a>标签: a [title=Home]

五、性能对比

lxml 和正则表达式模块都是C语言编写的,而BeautifulSoup则是纯Python 编写的。下表总结了每种抓取方法的优缺点。

选择器 性能 使用难度 安装难度
正则表达式 困难 简单(内置模块)
BeautifulSoup 简单 简单(纯Python)
lxml 简单 相对困难

需要注意的是。lxml在内部实现中,实际上是将CSS选择器转换为等价的Xpath选择器。

六、总结

如果你的爬虫瓶颈是下载网页,而不是抽取数据的话,那么使用较慢的方法(如BeautifulSoup) 也不成问题。如果只需抓取少量数据,并且想要避免额外依赖的话,那么正则表达式可能更加适合。不过,通常情况下,l xml是抓取数据的最好选择,这是因为该方法既快速又健壮,而正则表达式和BeautifulSoup只在某些特定场景下有用。

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

如何利用CSS选择器抓取京东网商品信息

前几天小编分别利用Python正则表达式BeautifulSoupXpath分别爬取了京东网商品信息,今天小编利用CSS选择器来为大家展示一下如何实现京东商品信息的精准匹配~~

如何利用CSS选择器抓取京东网商品信息

CSS选择器

目前,除了官方文档之外,市面上及网络详细介绍BeautifulSoup使用的技术书籍和博客软文并不多,而在这仅有的资料中介绍CSS选择器的少之又少。在网络爬虫的页面解析中,CCS选择器实际上是一把效率甚高的利器。虽然资料不多,但官方文档却十分详细,然而美中不足的是需要一定的基础才能看懂,而且没有小而精的演示实例。

如何利用CSS选择器抓取京东网商品信息

京东商品图

首先进入京东网,输入自己想要查询的商品,向服务器发送网页请求。在这里小编仍以关键词“狗粮”作为搜索对象,之后得到后面这一串网址:https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,其中参数的意思就是我们输入的keyword,在本例中该参数代表“狗粮”,具体详情可以参考Python大神用正则表达式教你搞定京东商品信息。所以,只要输入keyword这个参数之后,将其进行编码,就可以获取到目标URL。之后请求网页,得到响应,尔后利用CSS选择器进行下一步的数据采集。

商品信息在京东官网上的部分网页源码如下图所示:

如何利用CSS选择器抓取京东网商品信息

部分网页源码

仔细观察源码,可以发现我们所需的目标信息在红色框框的下面,那么接下来我们就要一层一层的去获取想要的信息。

在Python的urllib库中提供了quote方法,可以实现对URL的字符串进行编码,从而可以进入到对应的网页中去。

如何利用CSS选择器抓取京东网商品信息

CSS选择器在线复制

很多小伙伴都觉得CSS表达式很难写,其实掌握了基本的用法也就不难了。在线复制CSS表达式如上图所示,可以很方便的复制CSS表达式。但是通过该方法得到的CSS表达式放在程序中一般不能用,而且长的没法看。所以CSS表达式一般还是要自己亲自上手。

直接上代码,利用CSS去提取目标信息,如商品的名字、链接、图片和价格,具体的代码如下图所示:

如何利用CSS选择器抓取京东网商品信息

代码实现

如果你想快速的实现功能更强大的网络爬虫,那么BeautifulSoupCSS选择器将是你必备的利器之一。BeautifulSoup整合了CSS选择器的语法和自身方便使用API。在网络爬虫的开发过程中,对于熟悉CSS选择器语法的人,使用CSS选择器是个非常方便的方法。

最后得到的效果图如下所示:

如何利用CSS选择器抓取京东网商品信息

最终效果图

新鲜的狗粮再一次出炉咯~~~

如何利用CSS选择器抓取京东网商品信息

CSS选择器

关于CSS选择器的简单介绍:

BeautifulSoup支持大部分的CSS选择器。其语法为:向tag对象或BeautifulSoup对象的.select()方法中传入字符串参数,选择的结果以列表形式返回,即返回类型为list。

tag.select(“string”)

BeautifulSoup.select(“string”)

注意:在取得含有特定CSS属性的元素时,标签名不加任何修饰,如class类名前加点,id名前加 #。

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

手把手教你如何利用Xpath抓取京东网商品信息

如何利用Xpath选择器抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~

HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树;XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

如何利用Xpath选择器抓取京东网商品信息

京东网狗粮商品

首先进入京东网,输入自己想要查询的商品,向服务器发送网页请求。在这里小编仍以关键词“狗粮”作为搜索对象,之后得到后面这一串网址:https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,其中参数的意思就是我们输入的keyword,在本例中该参数代表“狗粮”,具体详情可以参考Python大神用正则表达式教你搞定京东商品信息。所以,只要输入keyword这个参数之后,将其进行编码,就可以获取到目标URL。之后请求网页,得到响应,尔后利用bs4选择器进行下一步的数据采集。

商品信息在京东官网上的部分网页源码如下图所示:

如何利用Xpath选择器抓取京东网商品信息

狗粮信息在京东官网上的网页源码

仔细观察源码,可以发现我们所需的目标信息是存在<li data-sku=”*****” class=”gl-item”>标签下的,那么接下来我们就像剥洋葱一样,一层一层的去获取我们想要的信息。

通常URL编码的方式是把需要编码的字符转化为%xx的形式,一般来说URL的编码是基于UTF-8的,当然也有的于浏览器平台有关。在Python的urllib库中提供了quote方法,可以实现对URL的字符串进行编码,从而可以进入到对应的网页中去。

如何利用Xpath选择器抓取京东网商品信息

在线复制Xpath表达式

很多小伙伴都觉得Xpath表达式很难写,其实掌握了基本的用法也就不难了。在线复制Xpath表达式如上图所示,可以很方便的复制Xpath表达式。但是通过该方法得到的Xpath表达式放在程序中一般不能用,而且长的没法看。所以Xpath表达式一般还是要自己亲自上手。

直接上代码,利用Xpath去提取目标信息,如商品的名字、链接、图片和价格,具体的代码如下图所示:

如何利用Xpath选择器抓取京东网商品信息

爬虫代码

在这里,小编告诉大家一个Xpath表达式匹配技巧。之前看过好几篇文章,大佬们都推荐Xpath表达式使用嵌套匹配的方式。在本例中,首先定义items,如下所示:

items = selector.xpath('//li[@class="gl-item"]')

之后通过range函数,逐个从网页中进行匹配目标信息,而不是直接通过复制Xpath表达式的方式一步到位。希望小伙伴们以后都可以少入这个坑~~

最后得到的效果图如下所示:

如何利用Xpath选择器抓取京东网商品信息

最终效果图

新鲜的狗粮再一次出炉咯~~~

小伙伴们,有没有发现利用Xpath来获取目标信息比正则表达式要简单一些呢?

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

如何利用BeautifulSoup选择器抓取京东网商品信息

昨天小编利用Python正则表达式爬取了京东网商品信息,看过代码的小伙伴们基本上都坐不住了,辣么多的规则和辣么长的代码,悲伤辣么大,实在是受不鸟了。不过小伙伴们不用担心,今天小编利用美丽的汤来为大家演示一下如何实现京东商品信息的精准匹配~~

HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树;因此可以说Beautiful Soup库是解析、遍历、维护“标签树”的功能库。

如何利用BeautifulSoup抓取京东网商品信息

京东官网狗粮商品详情页

首先进入京东网,输入自己想要查询的商品,向服务器发送网页请求。在这里小编仍以关键词“狗粮”作为搜索对象,之后得到后面这一串网址:https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,其中参数的意思就是我们输入的keyword,在本例中该参数代表“狗粮”,具体详情可以参考Python大神用正则表达式教你搞定京东商品信息。所以,只要输入keyword这个参数之后,将其进行编码,就可以获取到目标URL。之后请求网页,得到响应,尔后利用bs4选择器进行下一步的数据采集。

商品信息在京东官网上的部分网页源码如下图所示:

如何利用BeautifulSoup抓取京东网商品信息

狗粮信息在京东官网上的网页源码

仔细观察源码,可以发现我们所需的目标信息是存在<li data-sku=”*****” class=”gl-item”>标签下的,那么接下来我们就像剥洋葱一样,一层一层的去获取我们想要的信息。

直接上代码,如下图所示:

如何利用BeautifulSoup抓取京东网商品信息

请求网页,获取源码

通常URL编码的方式是把需要编码的字符转化为%xx的形式,一般来说URL的编码是基于UTF-8的,当然也有的于浏览器平台有关。在Python的urllib库中提供了quote方法,可以实现对URL的字符串进行编码,从而可以进入到对应的网页中去。

之后利用美丽的汤去提取目标信息,如商品的名字、链接、图片和价格,具体的代码如下图所示:

如何利用BeautifulSoup抓取京东网商品信息

利用美丽的汤去提取目标信息

在本例中,有个地方需要注意,部分图片的链接是空值,所以在提取的时候需要考虑到这个问题。其解决方法有两个,其一是如果使用img[‘src’]会有报错产生,因为匹配不到对应值;但是使用get[‘src’]就不会报错,如果没有匹配到,它会自动返回None。此外也可以利用try+except进行异常处理,如果匹配不到就pass,小伙伴们可以自行测试一下,这个代码测速过程在上图中也有提及哈。使用get方法获取信息,是bs4中的一个小技巧,希望小伙伴们都可以学以致用噢~~~

最后得到的效果图如下所示:

如何利用BeautifulSoup抓取京东网商品信息

最终效果图

新鲜的狗粮出炉咯~~~

小伙伴们,有没有发现利用BeautifulSoup来获取目标信息比正则表达式要简单一些呢?

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

Python大神利用正则表达式教你搞定京东商品信息

京东(JD.com)是中国最大的自营式电商企业,2015年第一季度在中国自营式B2C电商市场的占有率为56.3%。如此庞大的一个电商网站,上面的商品信息是海量的,小编今天就带小伙伴利用正则表达式,并且基于输入的关键词来实现主题爬虫。

首先进去京东网,输入自己想要查询的商品,小编在这里以关键词“狗粮”作为搜索对象,之后得到后面这一串网址:https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,其实参数%E7%8B%97%E7%B2%AE解码之后就是“狗粮”的意思。那么非常明显,只要输入keyword这个参数之后,将其进行编码,就可以获取到我们的目标网址了,请求网页,得到响应,尔后利用选择器便可以进行下一步的精准采集了。

在京东网上,狗粮信息在京东官网上的网页源码如下图所示:

Python大神利用正则表达式教你搞定京东商品信息

狗粮信息在京东官网上的网页源码

话不多说,直接撸代码,如下图所示。小编用的是py3,也建议大家以后多用py3版本。通常URL编码的方式是把需要编码的字符转化为%xx的形式,一般来说URL的编码是基于UTF-8的,当然也有的于浏览器平台有关。在Python的urllib库中提供了quote方法,可以实现对URL的字符串进行编码,从而可以进入到对应的网页中去。

正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是一种可以用于模式匹配和替换的强有力的工具。找到目标网页之后,调用urllib中的urlopen函数打开网页并获取源码,之后利用正则表达式实现对目标信息的精准采集。

Python大神利用正则表达式教你搞定京东商品信息

利用正则表达式实现对目标信息的精准采集

正则表达式写在这个程序中确实蛮复杂的,也占据了多行,但是主要用到的正则表达式是[\w\W]+?和[\s\S]+?。

[\s\S]或者[\w\W]是完全通配的意思,\s是指空白,包括空格、换行、tab缩进等所有的空白,而\S刚好相反。这样一正一反下来,就表示所有的字符,完全的,一字不漏的。另外,[]这个符号,表示在它里面包含的单个字符不限顺序的出现,比如下面的正则:[ace]*,这表示,只要出现a/c/e这三个任意的字母,都会被匹配。

此外,[\s]表示,只要出现空白就匹配;[\S]表示,非空白就匹配。那么它们的组合,表示所有的都匹配,与它相对应的,有[\w\W]等,意义完全相同。其实,[\s\S] 和 [\w\W]这样的用法,比”.”所匹配的还要多,因为”.”是不会匹配换行的,所有出现有换行匹配的时候,人们就习惯 使用[\s\S]或者[\w\W]这样的完全通配模式。

最后得到的输出效果图如下所示:

Python大神利用正则表达式教你搞定京东商品信息

输出效果图

这样小伙伴们就可以获取到狗粮的商品信息了,当然,小编在这里只是抛砖引玉,只匹配了四个信息,而且只是做了个单页的获取。需要更多数据的小伙伴们可以自行去更改正则表达式和设置多页,达到你想要的效果。下篇文章小编将利用美丽的汤BeautifulSoup来进行匹配目标数据,实现目标信息的精准获取。

最后给大家简单介绍一下正则表达式。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。

正则表达式对于初学者确实晦涩难懂,不过慢慢学习还是可以掌握的,并不一定要完全记下来,但是你要知道什么时候需要什么参数,能做到顺利使用它就可以了。

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

一篇文章助你理解Python3中字符串编码问题

前几天给大家介绍了unicode编码和utf-8编码的理论知识,以及Python2中字符串编码问题,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系和一篇文章助你理解Python2中字符串编码问题。下面在Python3环境中进行代码演示,分别Windows和Linux操作系统下进行演示,以加深对字符串编码的理解。

一篇文章助你理解Python3中字符串编码问题

在Python2的Python文件的文件头往往会声明字符的编码格式,通过会使用代码“#-*- coding -*-”作为编码声明,如下图所示。

一篇文章助你理解Python3中字符串编码问题

因为考虑到Python文件中可能会穿插中文,不然的话Python通过解释器来读取文件的时候,文件中的中文就有可能识别不了。而在Python3中,我们就不必像Python2的文件那样进行声明编码格式了,因为在Python3中,默认将所有的字符都视为unicode格式了。下面在Python3环境下进行代码演示。

1、首先在Windows操作系统下的Python3环境中进行演示,如下图所示。

一篇文章助你理解Python3中字符串编码问题

可以看到str1就是一个中文的字符串,字符串前面也没有加u以表示其为unicode编码,其实也没有必要加那个字符,因为在Python3中将所有的字符都内置成unicode字符了,这就是Python2和Python3最大的区别。所有在这里可以直接调用encode()函数对字符串进行编码,而且也不会报错。

2、接下来在Linux操作系统下的Python3环境中进行演示,如下图所示。

一篇文章助你理解Python3中字符串编码问题

这个过程和Windows下是一样的,这里就不再赘述了。有个地方需要注意的是在Linux操作系统下,Python3的默认环境编码变为了utf-8编码,而不是Python2中的ASCII编码。

总的来说,Python3解决了一个字符串编码的重要问题,所以在字符串编码的报错方面相对Python2来说要少的多,帮助我们省下了很多事情。小伙伴们,关于在Python2和Python3中字符串的编码问题这个知识点十分重要,希望大家都可以get到噢~~

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

Python中的基础数据类型(String,Number)及其常用用法简析

Python中的基础数据类型

前言

哈喽,各位小伙伴们,相信大家和我一样,在开始接触Python这门语言的时候,会遇到很多困难。这边小编简单为大家总结下Python的基本数据类型,方便查看记忆。这没什么难点,只是琐碎了一些…

Python中的数据类型

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

    分类

    不可变数据类型:Number、String、Tuple

    可变:List、Dictionary、Set

    变量在Python中的操作

    python支持多变量赋值,如:

    a = b = c = 1
    print(a)
    print(b)
    print(c)

    此时三个变量a=1,b=1,c=1

    a, b, c = 1, 2, 3
    print(a)
    print(b)
    print(c)

    此时a=1,b=2,c=3

    这样可以互换两个变量的值,如:

    a = 1
    b = 2
    a, b = b, a
    print(a)
    print(b)

    不难发现a,b这两个变量的值已经交换了…

    而其他语言只能利用第三个变量完成两个变量的交换:

    a = 1 # 赋值
    b = 2 # 赋值
    
    c = a # 将第一个变量的值赋值给第三个变量,此时c保存了1
    a = b # 将第二个变量的值赋值给第一个变量,此时a保存了2
    b = c # 再将定义的第三个变量的值赋值给第二个变量,此时c保存的1赋值给b,完成交换
    print(a)
    print(b)

    查看数据类型

    type(x),如:

    a, b, c = 1, True, 1.0
    print(type(a), type(b), type(c))
    # 结果<class 'int'> <class 'bool'> <class 'float'>
    a, b, c = '1', 'True', '1.0'
    print(type(a), type(b), type(c))
    # 结果<class 'str'> <class 'str'> <class 'str'>

    Number

    temp = '123' # 非数字字符串会出错
    print(type(temp)) # <class 'str'>
    res = int(temp)
    print(type(res), res) # <class 'int'> 123
    temp = "b"
    res = int(temp, base=16) # 这里可以指定进制,注意不要超出进制范围,默认10进制
    print(type(res), res)
    print(1 == True) # True
    print(0 == False) # True

    关于Number类型知道与String相互转换,其他的数学运算几乎用不到,想了解请自行尝试,内容如下:

    abs(x)返回数字的绝对值
    ceil(x)向后取整
    cmp(x,y)若x < y 返回-1, 若 x == y 返回0, 若 x > y 返回1。Python 3 使用 (x>y)-(x<y) 替换
    exp(x)返回e的x次幂(ex)
    fabs(x)返回数字的绝对值
    floor(x)向前取整
    log(x)返回x的自然对数,x>0
    log10(x)返回以10为基数的x的对数
    max(x1,x2...)返回给定参数的最大值,参数可以为序列
    min(x1,x2...)返回给定参数的最小值,参数可以为序列
    modf(x)返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
    pow(x,y)返回x**y 运算后的值
    round(x[,n])返回x四舍五入的值,n为保留小数位数
    sqrt(x)返回数字x的平方根

    String

    获取字符串的长度
    temp = 'hahahahahahaha'
    print(len(temp)) # 14
    切片取值
    # [起始位置索引:结束位置索引,不包含:步长]
    temp = "abcdefg"
    res1 = temp[::] # 注意:不可少
    print(res1) # abcdefg
    res2 = temp[0:-1:2]
    print(res2) # ace
    字符串的格式化
    # 按默认一对一格式化
    temp1 = "我叫{},今年{}岁了!"
    res1 = temp1.format('咸鱼',22)
    print(res1) # 我叫咸鱼,今年22岁了!
    
    # 按索引格式化
    temp2 = "我叫{1},今年{0}岁了!"
    res2 = temp2.format('咸鱼',22)
    print(res2) # 我叫22,今年咸鱼岁了!
    
    # 键值对
    temp3 = "我叫{name},今年{age}岁了!"
    res3 = temp3.format(age=22,name='咸鱼')
    print(res3) # 我叫咸鱼,今年22岁了!
    find
    # 找到第一个位置   .find("e",[开始位置],[结束位置]) 注意不包含结束位置 <=开始位置 >结束位置
    # 找到返回索引 找不到返回-1
    temp = "hahe"
    res = temp.find("h",1,3)
    print(res)
    lower
    # 将字符串中的所有大写字母转换为小写字母
    temp = "AAAaaaBBbb"
    res=temp.lower()
    print(res) # aaaaaabbbb
    upper
    # 将字符串中的所有小写字母转换为大写字母
    temp = "abc"
    res=temp.upper()
    print(res) # ABC
    strip
    # 删除字符串的前后空格(换行、制表符、指定参数)
    # 默认删除换行符,制表符,空格等特殊符号
    temp = "     a aa   \n "
    res=temp.strip( )
    print(res) # a aa
    join
    # 字符串拼接
    # join方法是将字符串的每一位与调用的字符串进行拼接,除最后一位
    temp1 = 'abcd'
    temp2 = '-'
    res1 = temp2.join(temp1)
    print(res1) # a-b-c-d
    
    # 并不是两个字符串直接拼接
    temp3 = 'abc'
    temp4 = '123'
    res3 = temp3+temp4
    print(res3) # abc123
    replace
    # 替换指定字符串replace('需要更新的字符串','更新的字符串',[更新几个字符串,默认全部,超过位数不报错])
    temp = 'hahahaha'
    res = temp.replace("a", "e",50)
    print(res) # hehehehe

    关于字符串的内置函数无敌的多,其他实际也用不到…我就懒了…欢迎大家在留言区补充……