Python的字符串
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。
1、如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。
Python对bytes类型的数据用带b前缀的单引号或双引号表示:
x = b'ABC'
要注意区分’ABC’和b’ABC’,前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。
以Unicode表示的str通过encode()方法可以编码为指定的bytes(为了节约内存),例如:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。
在bytes中,无法显示为ASCII字符的字节,用\x##显示。
2、如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
如果bytes中包含无法解码的字节,decode()方法会报错:
>>> b'\xe4\xb8\xad\xff'.decode('utf-8')
Traceback (most recent call last):...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte
如果bytes中只有一小部分无效的字节,可以传入errors='ignore’忽略错误的字节:
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'
要计算str包含多少个字符,可以用len()函数:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> len('ABC')
3
>>> len('中文')
2
len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数:
>>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6
可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。
Python的字符串相关推荐
- Python 将字符串转为字典
引言 在工作中遇到一个小问题,需要将一个 Python 的字符串转为字典,比如字符串: user_info = '{"name" : "john", " ...
- python 遍历字符串
python 遍历字符串, 可以把字符串当作列表 来遍历即可 第一种方法使用for in 循环 # 使用for in str_a = "Hello,Python" for i in ...
- python删除指定位置的字符串_python去除区域 python删除字符串中指定位置字符
python删除字符串中指定位置字符 原程序是这样的: ser = serial.Serial("/dev/ttyAMA0", 9600) def main字符串的话,你可以把他当 ...
- python 遍历字符串的每一个字符_Python之字符串的遍历的4种方式
python的字符串遍历有4种方式: 1. 下标法 2. for in 3. iter内置函数 4. enumerate 其中下标法和enumerate适合需要判断后续字符的场景,比如循环到下标ind ...
- python输入字符串转换为公式_将python字符串转化成长表达式的函数eval实例
爬一个网页时,要保存的数据都没有encode,就导致保存下来的中文都变成unicode了... 那么,怎么把一个表示字符串的unicode还原成unicode呢? 函数eval(expression) ...
- python 替换字符串中的元素
python 替换字符串中的元素 def str_replace(old_str,old,new):"""在 old_str 字符串中,把 old 替换成 new:par ...
- python xml字符串和dict字典互转
python xml字符串和dict字典互转 字典 转 xml def trans_dict_to_xml(data_dict):"""字典转xml:param data ...
- python 判断字符串是否包含另一个字符串_强烈推荐:Python字符串(string)方法整理(一)...
作者:骏马金龙 原文地址: https://www.cnblogs.com/f-ck-need-u/p/9127699.html python中字符串对象提供了很多方法来操作字符串,功能相当丰富. p ...
- python反转字符串(简单方法)及简单的文件操作示例
Python反转字符串的最简单方法是用切片: >>> a='123456' >>> print a[::-1] 654321 切片介绍:切片操作符中的第一个数(冒号 ...
- python统计字符串数字个数_python统计字符串中数字个数_后端开发
python怎么随机生成奇数_后端开发 python随机生成奇数的方法:导入random模块,使用random模块生成随机数,然后判断生成的随机数是否为奇数,若是奇数就加入列表.使用此方法得到的列表包 ...
最新文章
- Playboy封面女郎、互联网第一夫人,程序员们的“钢铁审美”
- HDU - 6610 Game(带修莫队)
- mysql5.7卸载语句_MySQL5.7完全卸载
- 多规则策略如何筛选|视频版
- spring5源码-aop
- html5期末大作业:基于html+css+javascript+jquery+bootstarp响应式图书电商HTML模板网上书店(25页)
- javascript原生代码实现轮播图片
- bitvise ssh client 连接linux,推荐SSH客户端Bitvise SSH Client
- 数据库迁移工具flyway
- 基于ssm+vue+elementui的的ktv点歌管理系统
- 怎么判断两个多项式互素_多项式互素的等价条件
- 【Android】Android SurfaceFlinger之BufferQueue
- uniapp打包安卓apk增加推送UniPush工具hbuilder
- 20190919题目总结——选择题
- 计算机专业期末背书,据说大学学这些专业,期末考试最酸爽!
- 408 计算机组成,2018考研408计算机组成原理名词解释(6)
- python归一化和反归一化
- 基于PythonMagick实现png、jpg批量转ico
- samba客户端不能正常读写的排查步骤(Linux作为服务端)
- 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)