首页 >

浅谈python学习之字符编码与字符串

后端开发|Python教程浅谈python学习之字符编码与字符串
python,字符编码,字符串
后端开发-Python教程
本篇文章给大家带来的内容是浅谈python学习之字符编码与字符串。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
传媒公司网站源码,vscode合并2个相同,ubuntu进不去系统,tomcat调优配置,sqlite建立连接,临沂网页设计招聘,dedecms 多模板共用数据库,ftp服务器连接被重置,进度条插件,rails前端框架,学爬虫教程,php错误日志在哪,SeO优化点击,springboot本次请求,2017在线算命网站源码,网页模版css,制冷公司简介模板,html5网站后台制作,织梦 页面错位,e创政府网站管理系统access 门户版,微擎微点餐小程序lzw
字符编码是什么?
小说付费 源码,单ubuntu双硬盘,arcgis中爬虫编程,php没落?,seo移动站lzw
例如汉字“中”,可以用以下表示
teamviewer源码,ubuntu不能创建efi,tomcat一机多站,wind 数据爬虫,北京php收费标准,富贵SEOlzw
十进制:20013

二进制:01001110 00101101(unicode)/11100100 10111000 10101101(utf-8)

十六进制:u4e2d

ascii编码

ASCII编码是1个字节

只能编码纯英文

节省空间

unicode编码

Unicode编码通常是2个字节。(比如字母A用ASCII编码是十进制的65,二进制的01000001;A的Unicode编码是00000000 01000001。)

uicode统一编码,解决编码冲突,乱码问题消失

比ascii多一倍的存储空间,存储和传送时不划算(UTF-8解决)

utf-8编码(可变长的unicode编码)

UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

字符ASCIIUnicodeUTF-8
A0100000100000000 0100000101000001
x01001110 0010110111100100 10111000 10101101

1)如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间;

2)ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

计算机系统通用的字符编码工作方式:

内存:统一unicode编码

硬盘、传输:转换为utf-8

浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。

Python的字符串

相关函数

ord()函数获取字符的整数表示(单个字符)参数为要操作的单个字符,返回一个整数。

chr()函数把编码转换为对应的字符(单个字符)

encode()函数,将str字符串以指定的编码方式(参数)变为bytes

‘str’.encode(ascii/utf-8)返回bytes字符串

中文以ascii编码会报错

decode()函数把从网络或磁盘上读取的bytes以指定的编码方式(参数)变为str

‘bytes’.decode(ascii/utf-8)返回str字符串

bytes无法解码会报错,如果bytes中只有一小部分无效的字节,可以传入errors=’ignore’忽略错误的字节

>>> b’\xe4\xb8\xad\xff’.decode(‘utf-8′, errors=’ignore’) ‘中’

len()函数,计算字符串包含字符个数

>>> len(b’ABC’) 3 >>> len(b’\xe4\xb8\xad\xe6\x96\x87′) 6 >>> len(‘中文’.encode(‘utf-8’)) 6

在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言

Python的字符串类型是str,如果要在网络上传输,或者保存到磁盘上,就需要把str变为bytes。

>>为了避免乱码问题,应当始终坚持使用UTF-8编码对strbytes进行转换<<

str和bytes的区别

1)str一个字符对应若干个字节,但bytes的每个字符都只占用一个字节。(将多字节的字符分解为单字节的多字符)

>>> ‘ABC’.encode(‘ascii’) b’ABC’ >>> ‘中文’.encode(‘utf-8′) b’\xe4\xb8\xad\xe6\x96\x87’

在bytes中,无法显示为ASCII字符的字节,用\x##显示。

2)bytes字符带前缀,带引号

.py文件中含中文要用utf-8编码

#!/usr/bin/env python3 # -*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

>>编辑器用UTF-8 without BOM<<

字符串格式化问题

>>> ‘Hello, %s’ % ‘world’ ‘Hello, world’ >>> ‘Hi, %s, you have $%d.’ % (‘Michael’, 1000000) ‘Hi, Michael, you have $1000000.’

%运算符

就是用来格式化字符串的。在字符串内部有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

转义,用%%来表示一个%

>>> ‘growth rate: %d %%’ % 7 ‘growth rate: 7 %’

占位符替换内容
%d整数
%f浮点数
%s字符串
%x十六进制整数

format()

另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:

>>> ‘Hello, {0}, 成绩提升了 {1:.1f}%’.format(‘小明’, 17.125) ‘Hello, 小明, 成绩提升了 17.1%’


浅谈python学习之字符编码与字符串
  • PHP判断字符串编码是否为utf8的函数
  • PHP判断字符串编码是否为utf8的函数 | PHP判断字符串编码是否为utf8的函数 ...

    浅谈python学习之字符编码与字符串
  • 分享CSS字符编码引起乱码快速解决办法
  • 分享CSS字符编码引起乱码快速解决办法 | 分享CSS字符编码引起乱码快速解决办法 ...

    浅谈python学习之字符编码与字符串
  • Python使用chardet判断字符编码
  • Python使用chardet判断字符编码 | Python使用chardet判断字符编码 ...