Python程序设计与算法基础教程(第2版)(微课版)
上QQ阅读APP看书,第一时间看更新

5.5 字符串

字符串(str)为有序的字符集合,即字符序列。str对象是不可变对象。

5.5.1 字符串的序列操作

字符串支持序列的基本操作,包括索引访问、切片操作、连接操作、重复操作、成员关系操作、比较运算操作,以及求字符串的长度、最大值、最小值等。

通过len(s)可以获取字符串s的长度,如果其长度为0,则为空字符串。

例5.16】 字符串的序列操作示例。

5.5.2 字符串编码

在默认情况下,Python字符串采用utf-8编码。在创建字符串时,用户也可以指定其编码方式:

其中,object为字节码对象(bytes或bytearray);encoding为编码;errors为错误控制。该构造函数的结果等同于bytes对象b的对象方法:

与之相对应,用户也可以把字符串对象s编码为字节码对象:

例5.17】 字符串编码和解码示例。

5.5.3 字符串的格式化

1. %运算符形式

Python支持类似于C语言的printf格式化输出,采用如下形式。

格式字符串与C语言中的printf格式字符串基本相同。格式字符串由固定文本和格式说明符混合组成。格式说明符的语法如下。

其中:key(可选)为映射键(适用于映射的格式化,例如'%(lang)s');flags(可选)为修改输出格式的字符集;width(可选)为最小宽度,如果为*,则使用下一个参数值;precision(可选)为精度,如果为*,则使用下一个参数值;Length为修饰符(h、l或L,可选),Python忽略该字符;type为格式化类型字符。例如:

格式字符串的标识符(flags)如下。

  • '0':数值类型格式化结果左边用0填充。
  • '-':结果左对齐。
  • '':对于正值,结果中将包括一个前导空格。
  • '+':数值结果总是包括一个符号('+'或'-')。
  • '#':使用另一种转换方式。

格式化类型字符(type)如下。

  • %d或%i:有符号整数(十进制)。
  • %o:有符号整数(八进制)。
  • %u:同%d,已过时。
  • %x:有符号整数(十六进制,小写字符),当标识符为'#'时输出前缀'0x'。
  • %X:有符号整数(十六进制,大写字符),当标识符为'#'时输出前缀'0X'。
  • %e:浮点数字(科学记数法,小写e),当标识符为'#'时总是带小数点。
  • %E:浮点数字(科学记数法,大写E),当标识符为'#'时总是带小数点。
  • %f或%F:浮点数字(用小数点符号),当标识符为'#'时总是带小数点。
  • %g:浮点数字(根据值的大小采用%e或%f),当标识符为'#'时总是带小数点,保留后面的0。
  • %G:浮点数字(根据值的大小采用%E或%F),当标识符为'#'时总是带小数点,保留后面的0。
  • %c:字符及其ASCII码。
  • %r:字符串,使用转换函数repr(),当标识符为'#'且指定precision时截取precision个字符。
  • %s:字符串,使用转换函数str(),当标识符为'#'且指定precision时截取precision个字符。
  • %a:字符串,使用转换函数ascii(),当标识符为'#'且指定precision时截取precision个字符。

2. format内置函数

format内置函数的基本形式如下。

格式说明符(format_spec)的基本格式如下。

其中,fill(可选)为填充字符,可以为除{}以外的任何字符;align为对齐方式,包括"<"(左对齐)、">"(右对齐)、"="(填充位于符号和数字之间,例如'+000000120')、"^"(居中对齐);sign(可选)为符号字符,包括"+"(正数)、"-"(负数)、""(正数带空格,负数带-);'#'(可选)为使用另一种转换方式;'0'(可选)为数值类型格式化结果左边用0填充;width(可选)是最小宽度;precision(可选)是精度;type是格式化类型字符。

格式化类型字符(type)如下。

  • b:二进制数。
  • c:字符,整数转换为对应的unicode。
  • d:十进制数。
  • o:八进制数。
  • x:十六进制数,小写字符,当标识符为'#'时输出前缀'0x'。
  • X:十六进制数,大写字符,当标识符为'#'时输出前缀'0X'。
  • e:浮点数字(科学记数法,小写e),当标识符为'#'时总是带小数点。
  • E:浮点数字(科学记数法,大写E),当标识符为'#'时总是带小数点。
  • f或F:浮点数字(用小数点符号),当标识符为'#'时总是带小数点。
  • g:浮点数字(根据值的大小采用e或f),当标识符为'#'时总是带小数点,保留后面的0。
  • G:浮点数字(根据值的大小采用E或F),当标识符为'#'时总是带小数点,保留后面的0。
  • n:数值,使用本地千位分隔符。
  • s:字符串,使用转换函数str(),当标识符为'#'且指定precision时截取precision个字符。
  • %:百分比。
  • _:十进制千分位分隔符或者二进制4位分隔符(Python 3.6的新增功能)。

例如:

3. 字符串的format方法

字符串的format方法的基本形式如下。

格式字符串由固定文本和格式说明符混合组成。格式说明符的语法如下。

其中,可选的索引对应于要格式化参数值的位置,可选的键对应于要格式化的映射的键;格式化说明符(format_spec)同format内置函数。例如: