Python 字符串
admin
2023-07-31 00:39:13
0

所有用过 Python (2&3)的人应该都看过下面两行错误信息:

UnicodeEncodeError: \'ascii\' codec can\'t encode characters in position 0-1: ordinal not in range(128)

UnicodeDecodeError: \'utf-8\' codec can\'t decode bytes in position 0-1: invalid continuation byte

这就是 Python 界的”锟斤拷”!

今天和接下来几期的内容将主要关注 Python 中的字符串(str)、字节(bytes)及两者之间的相互转换(encode/decode)。也许不能让你突然间解决所有乱码问题,但希望可以帮助你迅速找到问题所在。

定义

Python 中对字符串的定义如下:

Textual data in Python is handled with str objects, or strings. Strings are immutable sequences of Unicode code points.

Python 3.5 中字符串是由一系列 Unicode 码位(code point)所组成的不可变序列

1 (\’S\’ \’T\’ \’R\’ \’I\’ \’N\’ \’G\’)

1 \’STRING\’

不可变是指无法对字符串本身进行更改操作:

123 s = \’Hello\’print(s[3])s[3] = \’o\’

1234567891011 l TypeError                                 Traceback (most recent call last)  in ()      1 s = \’Hello\’      2 print(s[3])> 3 s[3] = \’o\’ TypeError: \’str\’ object does not support item assignment

序列(sequence)则是指字符串继承序列类型(list/tuple/range)的通用操作:

1 [i.upper() for i in \”hello\”]

1 [\’H\’, \’E\’, \’L\’, \’L\’, \’O\’]

至于 Unicode 暂时可以看作一张非常大的地图,这张地图里面记录了世界上所有的符号,而码位则是每个符号所对应的坐标(具体内容将在后面的几期介绍)。

1234 s = \’雨\’print(s)print(len(s))print(s.encode())

123 1b\’xe9x9bxa8\’

常用操作

  • len:字符串长度;
  • split & join
  • find & index
  • strip
  • upper & lower & swapcase & title & capitalize
  • endswith & startswith & is*
  • zfill

1 >UnicodeDecodeError: \'utf-8\' codec can\'t decode bytes in position 0-1: invalid continuation byte

这就是 Python 界的”锟斤拷”!

今天和接下来几期的内容将主要关注 Python 中的字符串(str)、字节(bytes)及两者之间的相互转换(encode/decode)。也许不能让你突然间解决所有乱码问题,但希望可以帮助你迅速找到问题所在。

定义

Python 中对字符串的定义如下:

Textual data in Python is handled with str objects, or strings. Strings are immutable sequences of Unicode code points.

Python 3.5 中字符串是由一系列 Unicode 码位(code point)所组成的不可变序列

1 (\’S\’ \’T\’ \’R\’ \’I\’ \’N\’ \’G\’)

1 \’STRING\’

不可变是指无法对字符串本身进行更改操作:

123 s = \’Hello\’print(s[3])s[3] = \’o\’

1234567891011 l TypeError                                 Traceback (most recent call last)  in ()      1 s = \’Hello\’      2 print(s[3])> 3 s[3] = \’o\’ TypeError: \’str\’ object does not support item assignment

序列(sequence)则是指字符串继承序列类型(list/tuple/range)的通用操作:

1 [i.upper() for i in \”hello\”]

1 [\’H\’, \’E\’, \’L\’, \’L\’, \’O\’]

至于 Unicode 暂时可以看作一张非常大的地图,这张地图里面记录了世界上所有的符号,而码位则是每个符号所对应的坐标(具体内容将在后面的几期介绍)。

1234 s = \’雨\’print(s)print(len(s))print(s.encode())

123 1b\’xe9x9bxa8\’

常用操作

  • len:字符串长度;
  • split & join
  • find & index
  • strip
  • upper & lower & swapcase & title & capitalize
  • endswith & startswith & is*
  • zfill

1 ; tab-size:4;\”># split

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...