Python基础教程(第2版)学习笔记_010:第3章 字符串的操作
时间:2011-03-14 来源:谢晖
1、不能进行的操作:
所有标准的序列操作(索引、分片、乘法、判断成员资格、求长度、取最小和最大值)对字符串同样适用;上一章已经讲述了这些操作。但是,请记住字符串都是不可变的。因此类似下面的分片赋值是不合法的。
也就是说由于字符串是不可变的,所以不能对它进行分片赋值操作,但可以通过别的方法来改变,不用我再说了吧?
2、对字符串进行格式化(精简版——并不精简)
为什么要对字符串进行格式化呢?从下面的例子可以看出,多是应用在对固定格式的内容进行批量操作。先看关于字符串格式化的命令:%
格式:待格式化的字符串%希望格式化的值。(也就是一种替换操作)即在待格式化的字符串中放置哪些希望格式化的值。就这么简单!
这是最简单的。
观察上面的程序:%左边出现了一个%s,什么意思?表示将%右边的值替换到该位置,并且指定%右边的值是字符格式,如果不是,就用s进行转换,再比如:
%右边的38363明显是数字,但一样可以运行,因为通过s将38363转换为了字符格式,再进行替换操作。
%右边的值可以是一个字符串或数字,甚至也可以是多个值的元组或下章要讨论到的字典,但一般情况下是使用元组。但是注意:%左右两侧必须一一对应,即元组有几个值,%左边待格式的字符串必须有几个%与之对应,否则会报错。
观察上面的程序:第2个命令行,只提供了一个字符串,与左边的不对应,故报错。第3个命令行虽然提供了元组,但由于与左边的%号的个数不对应,所以也报错。
为什么这个地方始终强调元组,而不用上一章提到的列表,或者其它序列呢?因为如果用列表或其他序列(比如字符串——多个),那在%中只会解释一个值,只有元组和字典才可以格式化1个以上的值。所以如果要对指定字符串的多处地方进行格式化,必须使用元组和字典,要是使用字符串或列表则中会出一个值,并且会报错!
格式式字符串的%s部分称为转换说明符(conversion sepcifier),它们标记了需要插入转换值的位置。s表示值会被格式化为字符串——如果不是字符串,则会用str将其转换为字符串。这个方法对大多数值都有效。那如果要在格式化字符串里面包括百分号,如何办呢?必须使用%%,这样Python就不会将百分号误认为是转换说明符了。
如果要格式化实数(即浮点数),可以使用f说明符类型,同时提供所需要的精度:一个句点再加上希望保留的小数。因为格式化说明符总是以表示类型的字符结束,所以精度应该放在类型字符前面:
能读明白左边的程序吗?还记得第1章是如何导入外部函数吗?