《Python基础教程(第二版)》学习笔记 -> 第三章 使用字符串
本章讲话介绍如何使用字符串格式化其他的值,并简单了解一下利用字符串的分割、联接、搜索等方法能做些什么。
基本字符串操作
所有标准的序列操作(索引、分片、乘法。判断成员资格、求长度、取最大最小值)对字符串同样适用,但,字符串都是不可变的,因此字符串的分片赋值是不合法的。
字符串格式化:精简版
字符串格式化 使用 字符串格式化操作符,即百分号 % 来实现。
在%的左侧放置一个字符串(格式化字符串),而右侧放置希望格式化的值。
>>> format = ‘My %s %s is football‘ >>> values = (‘favor‘,‘sport‘) >>> print format %values My favor sport is football
格式化字符串的%s部分称为转换说明符(conversion specifier),它们标记了需要插入转换值的位置。s表示会被格式化为字符串--如果不是字符串,则会用str将其转换为字符串。
格式化实数,可以用f说明符,同时提供所需要的精度:一个句点再加上希望保留的小数位数。例子如下:
>>> format = ‘Pi is with three decimals: %.3f‘ >>> from math import pi >>> print format % pi Pi is with three decimals: 3.142
字符串格式化:完整版
基本的转换说明符包括以下部分:
- %字符:标记转换说明符的开始;
- 转换标志(可选):- 表示左对齐; +表示在转换值之前要加上正负号;" "(空白字符)表示正数之前保留空格;0 表示转换值若位数不够则用0填充;
- 最小字段宽度(可选):转换后的字符串至少应该具有该值的指定的宽度。如果是*,则宽度会从值元组中读出;
- 点(.)后跟精度值(可选):转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出;
- 转换类型表:
- 简单转换
>>> ‘price of the eggs: %d‘ %9.5 ‘price of the eggs: 9‘ >>> ‘test tr :%s‘ %42L ‘test tr :42‘ >>> ‘test tr: %r‘ %42L ‘test tr: 42L‘
- 字段宽度和精度
>>> from math import pi >>> ‘%10f‘ %pi #字段宽度10 ‘ 3.141593‘ >>> ‘%10.2f‘ %pi #字段宽度10,精度2 ‘ 3.14‘ >>> ‘%.2f‘ %pi #精度2 ‘3.14‘ >>> ‘%.5s‘ %‘python is funny‘ ‘pytho‘
可以使用 * 作为字段宽度或者精度
>>> ‘%.*s‘ %(3,‘testing‘) ‘tes‘
- 符号、对齐和0填充
>>> ‘%010.2f‘ %pi ‘0000003.14‘
在字段宽度和精度值之前还可以放置一个“标表”,该标表可以是零、加号、减号 或者是空格。零表示数字将会用0进行填充。
减号(-)用来左对齐数值
>>> ‘%-10.2f‘ %pi ‘3.14 ‘
+,表示不管是正数还是负数都标出符号
>>> print (‘%+5d‘ %10)+ ‘\n‘ + (‘%+5d‘ %-10) +10 -10
#user provide the list‘s width width = input(‘Please enter the width:‘) price_width = 10 item_width = width - price_width header_format = ‘%-*s%*s‘ format = ‘%-*s%*.2f‘ print ‘=‘* width print header_format %(item_width, ‘item‘ , price_width, ‘price‘) print ‘-‘*width print format %(item_width,‘apples‘,price_width,0.5) print format %(item_width,‘apples‘,price_width,0.6) print format %(item_width,‘apples‘,price_width,0.7) print ‘=‘*width
结果如下:
Please enter the width:50 ================================================== item price -------------------------------------------------- apples 0.50 apples 0.60 apples 0.70 ================================================== >>>
字符串方法
- find
find方法可以在一个较长的字符串中查找子字符串。它返回子串所在位置的最左端索引,如果没有找到则返回-1.示例如下:
>>> ‘my test python program‘.find(‘python‘) 8 >>> title = ‘python basic book‘ >>> title.find(‘python‘) 0 >>> title.find(‘books‘) -1
- split
它是join的逆方法,用来将字符串分割成序列。>>> ‘1+2+3+4+5‘.split(‘+‘) [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘] >>> ‘/usr/bin/local‘.split(‘/‘) [‘‘, ‘usr‘, ‘bin‘, ‘local‘] >>> ‘Using the default‘.split() [‘Using‘, ‘the‘, ‘default‘]
如果不提供任何分隔符,程序会把所有空格作为分隔符(空格,制表,换行等)
- join
join是split方法的逆方法,用来在队列中添加元素:
>>> seq = [‘a‘,‘b‘,‘c‘] >>> sep = ‘+‘ >>> sep.join(seq) ‘a+b+c‘ >>> dirs = ‘‘,‘usr‘,‘bin‘,‘local‘ >>> ‘/‘.join(dirs) ‘/usr/bin/local‘ >>> print ‘C:‘+ ‘\\‘.join(dirs) C:\usr\bin\local
#转义符示例 >>> ‘\\‘ ‘\\‘ >>> print ‘s‘+‘\n‘+‘s‘ s s >>> print ‘s‘+‘\t‘+‘s‘ s s >>> print ‘s‘+‘\\‘+‘s‘ s\s - lower
>>> ‘My Lower Program!‘.lower() ‘my lower program!‘ >>> names = [‘apple‘,‘banana‘,‘pear‘] >>> name = ‘Apple‘ >>> if name.lower() in names: print name Apple
- replace
replace方法返回某字符串的所有匹配项均被替换后得到的字符串。
"test str is ‘str‘".replace(‘str‘,‘python‘) "test python is ‘python‘"
- strip
strip方法返回去除两侧(不包括内部)空格的字符串:>>> ‘ test ‘.strip() ‘test‘
- translate
translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符。它的又是在于可以同时进行多个替换。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。