python3
基本的字符串操作
索引,分片,乘法,判断成员资格,求长度,取最小值和最大值
字符串都是不可变的
字符串格式化使用字符串格式化操作符,即百分号%来实现,注意%也可用作求余运算
基本的转换说明符
1> %字符:标记转换说明符的开始
2> 转换标志: -表示左对齐; +表示在转换值之前加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充;
3> 最小字段宽度: 转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出;
4> .后跟精确值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度,如果是*,那么精度会从元组中读出。
5> 转换类型
1.简单转换
In [1]: 'Price of eggs: $%d' % 6 Out[1]: 'Price of eggs: $6'
2.字段宽度和精度
转换说明符可以包括字段宽度和精度,字段宽度是转换后的值所保留的最小字符个数,精度(对于数字转换来说)则是结果中应该包含的小数位数,或者(对于字符串转换来说)是转换后的值所能包含的最大字符个数。
In [14]: '%2f' %pi Out[14]: '3.141593' //字段宽2,是这样的; In [15]: '%3f' %pi Out[15]: '3.141593' //字段宽3,是这样的; In [16]: '%5f' %pi Out[16]: '3.141593' //字段宽5,是这样的; In [17]: '%9f' %pi Out[17]: ' 3.141593' //字段宽9,是这样的;看见没,一共八位,前面多了一个空格位; In [18]: '%10f' %pi Out[18]: ' 3.141593' //字段宽10,前面多了两个空格位; In [19]: '%10.2f' %pi //字段宽是10,精度是2,通过(.)进行分割,你记住了吗? Out[19]: ' 3.14' In [22]: '%.5s' % 'lambert' Out[22]: 'lambe' //精确度为5位
3.符号,对齐和0填充
在字段宽度和精度值之间还可以放置一个“标表”,该标表可以是零,加号,减号或空格.
零表示数字将会用0进行填充。
In [32]: '%8.2f' %pi Out[32]: ' 3.14' In [33]: '%08.2f' %pi Out[33]: '00003.14' In [38]: '%-08.2f' %pi //"-表示左对齐" Out[38]: '3.14 '
总结,下面打印水果的价格表单
#!/usr/bin/python2.6 width = input('Pls enter width:') prime_width = 10 item_width = width - prime_width ### %:转换的开始,- :左对齐, * :从元组中读出 header_format = '%-*s%*s' format = '%-*s%*.2f' print '=' * width print header_format %(item_width,'Item', prime_width,'Prime') print '-' * width print format %(item_width,'Apples',prime_width,6.8) print format %(item_width,'Pears',prime_width,3.8) print format %(item_width,'Oranges',prime_width,2.6) print format %(item_width,'Prunes',prime_width,3.3) print '=' * width
结果如下:
[root@lambert ~]# python price.py
Pls enter width:35
===================================
Item Prime
-----------------------------------
Apples 6.80
Pears 3.80
Oranges 2.60
Prunes 3.30
===================================
[root@lambert ~]#
4.字符串方法
字符串的所有方法来源于string模块,但是这个模块还包括一些不能作为字符串方法是用的常量和函数;常用如下;
4.1 find方法可以在较长的字符串中查找子字符串,它返回子字符串所在的最左侧索引,如果没有找到返回值为-1
In [33]: 'Hello,Iam Lambert.Lee'.find('I') Out[33]: 6 //不信你查一查 In [34]: 'Hello,Iam Lambert.Lee'.find('Lambert') Out[34]: 10
4.2 join方法是非常重要的字符串方法,用在队列中添加元素;而split则相反,用来将字符串分割成序列
In [40]: Num = ['a','b','c'] In [41]: sep = '+' In [42]: sep.join(Num) Out[42]: 'a+b+c' In [43]: 'a+b+c'.split('+') Out[43]: ['a', 'b', 'c']
4.3 lower方法返回字符串的小写字母版,而title方法则相反;
In [44]: 'Hello,Lambert'.lower() Out[44]: 'hello,lambert' In [45]: 'Hello,Lambert'.title() Out[45]: 'Hello,Lambert'
4.4 replace方法返回某字符串的所有匹配项均被替换之后得到字符串;
In [46]: 'this is a test'.replace ('a','') Out[46]: 'this is test'
4.5 strip方法返回去除两侧(不包括内部)空格的字符串;
In [51]: ' lambert, nihaoa '.strip() Out[51]: 'lambert, nihaoa'
4.6 translate方法和replace方法一样,可以替换字符串中的某些部分,但是和replace不同的是,translate方法只处理单个字符。
它的优势在于可以同时进行多个替换,有时候比replace效率高的多。但是这个需要先建一张转换表,非常复杂,不研究了,换成string
模块里面的maketrans函数就行。一般用的不多,记住有这个概念就行;