网站性能检测评分
注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。
python3中文
Python中文乱码?输出中文乱码?我公司那批本科生也是!乱码攻略 营销视频课程
乱码这个问题可谓是难倒了许多的小白啊!其实乱码并不难解决,只是你得有个乱码解决的攻略,今天教你这个方法希望以后在也不会碰到这种情况了哈!
1.在Python中使用中文
1.UNICODE (UTF8-16), C854;
2.UTF-8, E59388;
3.GBK, B9FE。
1.1Windows控制台
1.2Windows IDLE(在Shell上运行)
1.3在IDLE上运行代码
1.4Windows Eclipse
在Eclipse中处理中文更加困难,因为在Eclipse中,编写代码和运行代码属于不同的窗口,而且他们可以有不同的默认编码。对于如下代码:
前四个print运行正常,最后两个print都会抛出异常:
可以看出Eclipse控制台的缺省编码方式是GBK;所以不支持UNICODE也在情理之中。如果把文件中的coding修改成GBK,则可以直接打印GBK编码的str对象,比如s。
1.5从文件读取中文
在window下面用记事本编辑文件的时候,如果保存为UNICODE或UTF-8,分别会在文件的开头加上两个字节
“/xFF/xFE”和三个字节“/xEF/xBB/xBF”。在读取的时候就可能会遇到问题,但是不同的环境对这几个多于字符的处理也不一样。
打开unicode格式的文件后,得到的字符串正确。这时候适用utf-16解码,能得到正确的unicdoe对象,可以直接使用。多余的那个填充字符在进行转换时会被过滤掉。
打开ansi格式的文件后,没有填充字符,可以直接使用。
结论:读写使用python生成的文件没有任何问题,但是在处理由notepad生成的文本文件时,如果该文件可能是非ansi编码,需要考虑如何处理填充字符。
1.6在数据库中使用中文
1.7在XML中使用中文
使用xml.dom.minidom和MySQLdb类似,对生成的dom对象调用toxml方法得到的是unicode对象。如果希望输出utf-8文本,有两种方法:
1.使用系统函数
2.自己编码生成
通过阅读这篇文章是否有解决你现在所遇到的难题呢?
win8,64位系统安装Tesseract和pytesseract,用python轻松实现中文识别,超全攻略! 流量视频课程
OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程。
Tesseract:开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后经由Google进行改进,消除bug,优化,重新发布。当前版本为4.0
step1:
安装tesseract
从官网下载这个文件:
tesseract-ocr-setup-4.00.00dev.exe
下载地址:https://github/tesseract-ocr/tesseract/wiki/4.0-with-LSTM#400-alpha-for-windows
下载完成直接点击安装,安装过程中注意选择自己想要安装的语言包
下载完后进行安装,默认情况下安装程序会给你配置系统环境变量,以指向安装目录(之后可以通过DOS界面在任意目录运行tesseract)。安装完成后目录如下:
tessdata 目录存放的是语言字库文件,和在命令行界面中可能用到的参数所对应的文件. 这个安装程序默认包含了英文字库。
如果安装时候忘记选择语言库文件,可以通过以下网址下载剪切进tessdata 目录即可。
https://github/tesseract-ocr/tesseract/wiki/Data-Files
step2:pytesseract安装
pip安装pytesserac
step3:
修改pytesseract.py原文件
# tesseract_cmd = 'tesseract'###此处需要修修改
tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe'#改成你对应的路径
#如果不修改,会报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件。
#f = open(output_file_name)##此处需要修修改
f = open(output_file_name, encoding='utf-8')
#如果不修改,会儿报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xyy in position xxx: illegal multibyte sequence
修改处截图:
step4:
测试代码
import pytesseract
from PIL import Image
image = Image.open(r'C:\Users\yaohongfu\Desktop\4.png')
vcode = pytesseract.image_to_string(image,lang='chi_sim')
print(vcode)
#coding:utf-8
#Test one pageimport pytesseract
from PIL import Image
def processImage():
image = Image.open(r'C:\Users\yaohongfu\Desktop\4.png')
#背景色处理,可有可无
image = image.point(lambda x: 0 if x < 143 else 255)
newFilePath = 'raw-test.png'
image.save(newFilePath)
content = pytesseract.image_to_string(Image.open(newFilePath),lang='chi_sim')
#中文图片的话,是lang='chi_sim'
print(content)processImage()
#参考站点
https://github/tesseract-ocr/tesseract/wiki/4.0-with-LSTM#400-alpha-for-windows
https://github/tesseract-ocr/tesseract/wiki/Data-Files
https://github/madmaze/pytesseract
https://github/tesseract-ocr/tesseract
https://github/tesseract-ocr/tesseract/wiki
看小说的正确姿势,Python爬取起点中文网 推广视频课程
1.前言
昨晚学了一下bs4的BeautifulSoup,因为之前用的都是正则,感觉两者比起来,正则更加灵活,但控制不好就会爬到多余信息,而BeautifulSoup更加系统性。
2.观察网页结构
进入起点原创风云榜:http://r.qidian/yuepiao?chn=-1
老套路,懂我的人都知道我要看看有多少内容和页数需要爬。
翻到页面底部,发现有25页
去最后一页看了一下,是第500个作品
在谷歌浏览器(推荐)按下F12进入贤者模式,哦不,开发者模式。。。差点暴露了什么
我们跳到第一页
按F5刷新网页
点击network,点击下面红框消息
看Header,可以知道我们get请求的访问返回200表示正常访问
在谷歌浏览器中输入https://chrome.google/webstore/detail/infolite/ipjbadabbpedegielkhgpiekdlmfpgal,安装小插件(丘老师开发的定位小插件),为后文定位准确有很大帮助。
安装好之后,浏览器右上角会出现
点击之后会出现一个图形界面
比如我要爬作品名字,鼠标点击页面作品,会出现绿色,表示选中了,同时左边和上面出现的黄色表示同时选中了,但我们不要左边和上面的黄色信息(听起来怪怪的!),然后点击左边和上面的黄的区域,黄色区域变红色了(红色表示不选择)
此时只有文章名字是绿色了,同时插件界面上显示rank-view-list li,经测试要把#去掉,定位完成。
在Preview中定位到我们要的部分
接下来使用BeautifulSoup(美丽汤)找出我们要的内容
书名,作者,类型,简介,最新章节,书的地址链接 这些是我们要的
3.编写爬虫
import requestsfrom bs4 import BeautifulSoupres=requests.get('http://r.qidian/yuepiao?chn=-1&page=1')#print(res)#中间打印看看,好习惯soup=BeautifulSoup(res.text,'html.parser')#筛选器#print(soup)for news in soup.select('.rank-view-list li'):#定位 print(news)
结果如下:
注意这些标签(因为美丽汤提取是基于标签的)
经过测试
for news in soup.select('.rank-view-list li'):#Wrap后面一定有个空格,因为网页里有 #print(news) print(news.select('a')[1].text,news.select('a')[2].text,news.select('a')[3].text,news.select('p')[1].text,news.select('p')[2].text,news.select('a')[0]['href'])
可以设置提取内容如上面代码所示
提取结果是:
很乱,把内容存成字典格式再存放到列表中:
for news in soup.select('.rank-view-list li'):#Wrap后面一定有个空格,因为网页里有 #print(news) #print(news.select('a')[1].text,news.select('a')[2].text,news.select('a')[3].text,news.select('p')[1].text,news.select('p')[2].text,news.select('a')[0]['href']) newsary.append({'title':news.select('a')[1].text,'name':news.select('a')[2].text,'style':news.select('a')[3].text,'describe':news.select('p')[2].text,'url':news.select('a')[0]['href']})len(newsary)
显示每页20个作品
import pandasnewsdf=pandas.DataFrame(newsary)newsdf
使用pandas的DataFrame格式存放
是不是舒服多了
但是,这只是第一页的信息,接下来老套路,观察网页结构,在我之前文章(爬取智联招聘信息里有写到:https://ask.hellobi/blog/wangdawei/6710)
使用循环爬取25页内容
import requestsfrom bs4 import BeautifulSoupnewsary=[]for i in range(25): res=requests.get('http://r.qidian/yuepiao?chn=-1&page='+str(i))#print(res) soup=BeautifulSoup(res.text,'html.parser')#print(soup)#for news in soup.select('.rank-view-list h4'):#Wrap后面一定有个空格,因为网页里有 for news in soup.select('.rank-view-list li'):#Wrap后面一定有个空格,因为网页里有 #print(news) #print(news.select('a')[1].text,news.select('a')[2].text,news.select('a')[3].text,news.select('p')[1].text,news.select('p')[2].text,news.select('a')[0]['href']) newsary.append({'title':news.select('a')[1].text,'name':news.select('a')[2].text,'style':news.select('a')[3].text,'describe':news.select('p')[1].text,'lastest':news.select('p')[2].text,'url':news.select('a')[0]['href']})import pandasnewsdf=pandas.DataFrame(newsary)newsdf
这次终于完整了
最后存到本地~
newsdf.to_excel('qidian_rank1.xlsx')#输入到to按住Tab有很多格式,储存
用excel做一些后处理,把简介前面的空格去掉,换一下列之间的顺序(更符合正常阅读)
4.结果展现
感谢阅读~
文章中可能有一点的小错误,如有大佬发现,还请批评指正、
分享最后我还是要推荐下我自己建的Python学习群: 639584010,群里都是学Python开发的,如果你正在学习Python,小编欢迎你加入,大家都是Python党,不定期分享干货(只有Python相关的),包括我自己整理的一份2018最新的Python资料和零基础入门教程,欢迎初学和进阶中的小伙伴。
Python3长征路第005天--PyCharm之中文乱码的解决概要 互联网视频课程
文/爱琳玩python
长征路第005天今天日更的晚,因为我大四川这边被龙王放水,我家楼下已淹到脖子位置了,还好我家是6楼,上午本来想把这篇文章发出去的,但苦于家中无电,庆幸家中还有余粮,不至于饿到!看网上说四川今年是50年难得一遇的大洪水,大家多多注意啊!危险地段不要去!万幸现在来电,接着我的python3长征之路第005天,在这之前感谢关注我的朋友,同时也感谢分享和收藏的朋友!谢谢你们的支持!
谢谢废话不多说,回到主题,今天我为大家带来的是Pycharm-中文乱码的解决方法!在我大中国地区,计算机语言遇到很多问题都更编码有关,而我们的pycharm只支持utf-8的编码格式,而我的win7系统有是ASCII码,这就在我第一打开Pycharm时出现了下面的情形:
注意红框处的乱码这个查了是因为Pycharm默认没有设置支持中文显示的字体。所以一开始我得去设置支持中文的字体!在进入settings--Appearance,勾选Override default fonts by 选择一个你喜欢的支持中文的字体!
选择自己喜欢的保存后,你就会发现乱码不存在了!
终于能看懂文件夹的名字了这就是国人学习计算机语言时必须跳的坑。谁叫编程最开始是国外了。这咱还只有认了,接下来是输出控制台显示为乱码,这个其实也挺简单的!
注意红框处出现这种情况,到settings--Editor--File Encodings里设置Ideencoding/Project Encodings Default Encodings for properties 都是UTF-8:
就这两个地方设置好后我们再来运行代码试试看效果怎样!
注意红色框处看来Pycharm最后通过修改设置,达到了我想要的结果这样再也不用担心会有乱码了。
写到这里时,我大四川又开始下起暴雨了,看来明天又要被困家中,在这里我还是会坚持下去,我有个梦就是想把这个python3的长征之路走的更远,而这里我给自己定的目标是300天,如果你也是正在学习python的朋友,让我们一起来走一走这条长征之路!
最后我还是厚着自己这张不帅的脸,希望你们看到这里时能点个关注和分享,同时如果可以也写个评论
python opencv在图像上书写并显示中文的好方法 公司视频课程
大家在使用python的cv2库处理图像时经常会有需要在图像的某处输出一些文字,常用的方法是利用cv2.putText函数在图像某个坐标位置添加文字,但是这个函数无法输出utf-8类型的字符,因此只能输出英文或者数字而无法直接在图像中添加中文描述。用百度搜这个问题常见的解决办法是利用freetype来解决,但是这种办法需要将字符编码解码比较麻烦,这里推荐一个简单的在图像中添加中文的办法:利用PIL的image函数在图像中添加中文,然后再转回cv2的格式。
百度搜索结果
实现过程
这里为了方便以从网络上随便下载的头条logo图像为例,图像如下:
这里默认运行环境是python3,首先需要下载中文支持的相关字体,这里我下载了黑体中文字体simhei.ttf,百度搜索即可找到下载资源。将字体放在磁盘中某个事先指定的位置。
安装相关包,需要import的有以下库
除了cv2,还需要安装PIL和numpy两个库,都是pip install 即可完成安装。
上图第一句是读入图像,这里函数第一个参数是图像位置,根据具体放的位置修改就好。 第二句是将图像转到Image格式。第三句建立一个draw对象用来画图或者添加文字,最后一句加载字体,这里同样将路径修改为实际放的位置即可。50是字的大小,根据实际情况调整,这里我为了显示明显设置的比较大。
接下来就可以添加文字了,draw.text函数在图像数组中加入文字,(0,0)是插入文字的坐标,根据实际情况调整。‘今日头条’是插入的具体文字内容,(0,0,0)是文字的颜色,这里使用了全0的黑色为例。
最后将图像变换为cv2的array格式,保存图像,打开图像如下图,可以看出图像左上角已经成功添加了中文文字。
Python中文乱码?输出中文乱码?我公司那批本科生也是!乱码攻略 流量视频课程
乱码这个问题可谓是难倒了许多的小白啊!其实乱码并不难解决,只是你得有个乱码解决的攻略,今天教你这个方法希望以后在也不会碰到这种情况了哈!
1.在Python中使用中文
1.UNICODE (UTF8-16), C854;
2.UTF-8, E59388;
3.GBK, B9FE。
1.1Windows控制台
1.2Windows IDLE(在Shell上运行)
1.3在IDLE上运行代码
1.4Windows Eclipse
在Eclipse中处理中文更加困难,因为在Eclipse中,编写代码和运行代码属于不同的窗口,而且他们可以有不同的默认编码。对于如下代码:
前四个print运行正常,最后两个print都会抛出异常:
可以看出Eclipse控制台的缺省编码方式是GBK;所以不支持UNICODE也在情理之中。如果把文件中的coding修改成GBK,则可以直接打印GBK编码的str对象,比如s。
1.5从文件读取中文
在window下面用记事本编辑文件的时候,如果保存为UNICODE或UTF-8,分别会在文件的开头加上两个字节
“/xFF/xFE”和三个字节“/xEF/xBB/xBF”。在读取的时候就可能会遇到问题,但是不同的环境对这几个多于字符的处理也不一样。
打开unicode格式的文件后,得到的字符串正确。这时候适用utf-16解码,能得到正确的unicdoe对象,可以直接使用。多余的那个填充字符在进行转换时会被过滤掉。
打开ansi格式的文件后,没有填充字符,可以直接使用。
结论:读写使用python生成的文件没有任何问题,但是在处理由notepad生成的文本文件时,如果该文件可能是非ansi编码,需要考虑如何处理填充字符。
1.6在数据库中使用中文
1.7在XML中使用中文
使用xml.dom.minidom和MySQLdb类似,对生成的dom对象调用toxml方法得到的是unicode对象。如果希望输出utf-8文本,有两种方法:
1.使用系统函数
2.自己编码生成
通过阅读这篇文章是否有解决你现在所遇到的难题呢?
小白学Python|在国内,你就设置中文编码吧 推广视频课程
Python 中文编码
前面章节中我们已经学会了如何用 Python 输出 "Hello, World!",英文没有问题,但是如果你输出中文字符"你好,世界"就有可能会碰到中文编码问题。
Python 文件中如果未指定编码,在执行过程会出现报错:
#!/usr/bin/pythonprint "你好,世界";
以上程序执行输出结果为:
File "test.py", line 2SyntaxError: Non-ASCII character '' in file test.py on line 2, but no encoding declared; see http://python.org/peps/pep-0263.html for details
Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
解决方法为只要在文件开头加入# -*- coding: UTF-8 -*-或者#coding=utf-8就行了
注意:#coding=utf-8的=号两边不要空格。
实例
#!/usr/bin/pythonprint "你好,世界";
输出结果为:你好,世界
注意:Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。注意:如果你使用编辑器,同时需要设置 py 文件存储的格式为 UTF-8,否则会出现类似以下错误信息:
Pycharm 设置步骤:
进入file > Settings,在输入框搜索encoding。找到Editor > File encodings,将IDE Encoding和Project Encoding设置为utf-8。
更简单的方法
其实pycharm右下角就可以切换编码,不用这么麻烦:请点击此处输入图片描述但是,如果你文件已经指定了编码# -*- coding: UTF-8 -*-,这里就不能修改了:
欢迎大家关注【软件测试的艺术】,和小编一起学习交流IT技术。