中企动力 > 头条 > python3中文

网站性能检测评分

注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。

python3中文

Python中文乱码?输出中文乱码?我公司那批本科生也是!乱码攻略 营销视频课程

img

Marks

关注

乱码这个问题可谓是难倒了许多的小白啊!其实乱码并不难解决,只是你得有个乱码解决的攻略,今天教你这个方法希望以后在也不会碰到这种情况了哈!

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轻松实现中文识别,超全攻略! 流量视频课程

img

kaiserin

关注

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爬取起点中文网 推广视频课程

img

Tawnie

关注

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之中文乱码的解决概要 互联网视频课程

img

翠安

关注

文/爱琳玩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在图像上书写并显示中文的好方法 公司视频课程

img

纪寻雪

关注

大家在使用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中文乱码?输出中文乱码?我公司那批本科生也是!乱码攻略 流量视频课程

img

由尔岚

关注

乱码这个问题可谓是难倒了许多的小白啊!其实乱码并不难解决,只是你得有个乱码解决的攻略,今天教你这个方法希望以后在也不会碰到这种情况了哈!

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|在国内,你就设置中文编码吧 推广视频课程

img

蓝天

关注

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技术。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP