对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:>>> ord('A')

65

>>> ord('中')

20013

>>> chr(66)

'B'

>>> chr(25991)

'文'

如果知道字符的整数编码,还可以用十六进制这么写str:>>> '\u4e2d\u6587'

'中文'

两种写法完全是等价的。

由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。

Python对bytes类型的数据用带b前缀的单引号或双引号表示:x = b'ABC'

要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。

以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:>>> 'ABC'.encode('ascii')

b'ABC'

>>> '中文'.encode('utf-8')

b'\xe4\xb8\xad\xe6\x96\x87'

>>> '中文'.encode('ascii')

Traceback (most recent call last):

File "", line 1, in

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##显示。

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是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()函数:>>> 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的字符串相关推荐

  1. python随机生成英文字符串_如何用Python语言生成随机字符串 | 学步园

    这是在Stackoverflow的关于 "用Python语言简洁地生成随机字符串" 的经典问答. 将此文翻译并分享下. 我想生成一个长度为N的字符串. 这个字符串应由数字和大写英文 ...

  2. Python 循环拼接字符串_详解Python拼接字符串的七种方式

    更多优质内容请关注「AI 应用前沿」 拥抱人工智能,并没有想象的那么难,每天懂一点就已经上路了[给力] Value的比较符号用双等号"==",上例中比较l1和l2的Value要写成 ...

  3. python输出数字和字符串_(一)1-5Python数字和字符串

    作业 一.数字数据类型用于存储数值.它们是不可变数据类型. a = 3.0 b = 2.5 c = 2.4 Python支持不同的数值类型 1.init(有符号整数) - 它们通常被称为整数或整数.它 ...

  4. python逐个读取字符_玩转python之字符串逐个字符或逐词反转

    众所周知,python中的字符串是无法改变的,反转一个字符串自然要创建一个拷贝:最简单的方法,当然是步长为"-1"的切片: result = astring[::-1] 如果要是按 ...

  5. [转载] python判断字符串中包含某个字符串_干货分享| Python中最常用的字符串方法

    参考链接: Python中字符串string capitalize 字符串是字符序列.Python中内置的string类代表基于Unicode国际字符集的字符串.除了Python中常见的操作外,字符串 ...

  6. php srelen 字符串_比较详细Python正则表达式操作指南

    Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式.Emacs 风格模式可读性稍差 ...

  7. python使用加号运算符可以连接两个字符串_如何在Python连接两个字符串

    如何在Python连接两个字符串 Python字符串是Unicode字符的集合. Python提供了许多内置函数来进行字符串操作.字符串串联是一个字符串与另一字符串合并时的过程.可以通过以下方式完成. ...

  8. python转化成字符串_如何利用Python将其他数据类型转换成字符串类型

    Python设计语言中有一类常用的数据类型:字符串数据类型.字符串数据类型定义的变量可以使用双引号或单引号将字符括起来,除了字符串数据类型,还有其他的数据类型,如整型.布尔型.列表.字典.元组.可以将 ...

  9. python中输入字符串_简单讲解Python中的字符串与字符串的输入输出

    简单讲解Python中的字符串与字符串的输入输出 发布于 2016-03-26 14:35:42 | 110 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向 ...

  10. python安全编码问题_浅谈Python中的编码问题

    对于Python的初学者来说,编码问题相当令人头疼.本文就根据我在学习过程中遇到的问题简单谈一下Python中的编码.首先简单介绍一下几种常见的编码. 一.几种常见的字符编码 ASCII码 ASCII ...

最新文章

  1. Json格式转化为string格式
  2. Scala 空返回值Unit
  3. python修改指定行,python读取文件的指定行并修改
  4. spring-boot注解详解(五)
  5. 设计模式(3):抽象工厂模式(Abstract Factory Pattern)
  6. 消息称苹果斥资2亿美元收购Xnor.ai;华为2000万英镑投资,加速发展HMS手机生态系统;国产SSD将迎来爆发……...
  7. 慎用ArrayList的contains方法,使用HashSet的contains方法代替
  8. windows 安装mysql的时候最后执行一直停留在Write configuration file
  9. 爬取表格类网站数据并保存为excel文件
  10. 洛谷 P1164:小A点菜(DP/DFS)
  11. 利用python爬虫爬百度百聘招聘数据----利用Ajax的方式抓取
  12. python网络通信基础-udp+NetAssist(网络调试助手)
  13. C语言每日一练——第61天:掷骰子游戏
  14. 使用Graphics将字符串居中绘制到图片上
  15. 基于SSM抑郁症自检测及初级自治疗网站的设计实现
  16. Jarvis_Web 刷题记录_Bellone北洛
  17. IDEA try catch快捷键、 快速生成get set 方法快捷键、快速生成有参和无参构造方法快捷键
  18. 【广州华锐互动】VR数字虚拟展厅为企业提升品牌形象和知名度
  19. 按键精灵模拟键盘批量输入英文大小写
  20. Win10系统补丁卸载工具

热门文章

  1. 开机一直黑屏后,扣电池,No bootable device or remote image found
  2. python爬虫采集66代理(66IP)并验证可用性
  3. stata中计算公式命令_Stata数据处理:各种求和方式一览
  4. (六)CMake与FFTW
  5. inventor弧度怎么标注_Inventor技巧 | 绘制草图时尺寸标注的细节
  6. 【安装篇】- 基于 VMWARE Oracle Linux7.9 安装 Oracle19c RAC 详细配置方案
  7. 第12届蓝桥杯 第一题:《直线》
  8. Java加密与解密笔记(四) 高级应用
  9. UE4(虚幻4)基础:蓝图初识--按shift加速奔跑
  10. H5中常见的 Android 和 iOS 兼容性问题