Python――字符串1

一、基本字符串操作

        所有标准的序列操作(索引、分片、乘法、判断成员资格、求长度、取最小值和最大值)对字符串同样适用。但是,请记住字符串都是不可变的。

二、字符串格式化:精简版

        字符串格式化使用字符串格式化操作符即百分号%来实现。在%的左侧放置一个字符串(格式化字符串),而右侧则放置希望格式化的值。可以使用一个值,如一个字符串或者数字,也可以使用多个值的元组或者字典。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> format = "Hello. %s. %s enough for ya?"  

  2. >>> values = ('world''Hot')  

  3. >>> print(format % values)  

  4. Hello. world. Hot enough for ya?  

        注意:如果使用类表或者其他序列代替元组,那么序列就会被解释为一个值。只有元组和字典可以格式化一个以上的值。


        格式化字符串的 %s 部分称为转换说明符(conversion specifier),它们标记了需要插入转换值的位置。

三、字符串格式化:完整版

        1. 如果右操作数是元组的话,则其中的每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符。

        2. 基本的转换说明符包括以下部分。

            (1)%字符:标记转换说明符的开始。

            (2)转换标志(可选):- 表示左对齐;+ 表示在转换值之前要加上正负号;“ ”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用 0 填充。

            (3)最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是 *,则宽度会从值元组中读出。

            (4)点(.)后跟精度值(可选):如果转换的是实数,精度值表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度就会从元组中读出。

            (5)转换类型

         3.1 简单转换

         简单的转换只需要写出转换类型。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> print(format % values)  

  2. Hello. world. Hot enough for ya?  

  3. >>> 'Price of eggs: $%d' % 42  

  4. 'Price of eggs: $42'  

  5. >>> 'Hexadecimal price of eggs: %x' % 42  

  6. 'Hexadecimal price of eggs: 2a'  

         3.2 字段宽度和精度


         字段宽度是转换后的值所保留的最小字符个数,精度(对于数字转换来说)则是结果中应该包含的小数位数,或者(对于字符串转换来说)是转换后的值所能包含的最大字符个数。

         这两个参数都是整数(首先是字段宽度,然后是精度),通过点号(.)分隔。虽然两个都是可选的参数,但如果只给出精度,就必须包含点号。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> from math import pi  

  2. >>> '%10f' % pi  

  3. '  3.141593'  

  4. >>> '%10.2f' % pi  

  5. '      3.14'  

  6. >>> '%.2f' % pi  

  7. '3.14'  

  8. >>> '%.*s' % (5'Guido van Rossum')  

  9. 'Guido'  

          3.3 符号、对齐和 0 填充


          在字段宽度和精度值之前还可以放置一个“标表”,该标表可以是零、加号、减号或空格。零表示数字将会用 0 进行填充。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> '%010.2f' % pi  

  2. '0000003.14'  

          减号(-)用来做对齐数值:



[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> '%-10.2f' % pi  

  2. '3.14      '  


          空白(“ ”)意味着在正数前加上空格。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> print(('% 5d' % 10) + '\n' + ('% 5d' % -10))  

  2.    10  

  3.   -10  


          加号(+),它表示不管是正数还是负数都标示出符号。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> print(('%+5d' % 10) + '\n' + ('%+5d' % -10))  

  2.   +10  

  3.   -10  

四、字符串方法


        字符串的方法丰富得多,这是因为字符串从 string 模块中“继承”了很多方法。尽管字符串方法完全来源于 string 模块,但是这个模块还包括一些不能作为字符串方法使用的常量和函数。下面是一些有用的字符串常量。

        (1) string.digits:包换数字 0 - 9 的字符串

        (2) string.letters:包含所有字母(大写和小写)的字符串

        (3) string.lowercase:包含所有小写字母的字符串

        (4) string.printable:包含所有可打印字符的字符串

        (5) string.punctuation:包含所有标点的字符串

        (6) string.uppercase:包含所有大写字母的字符串

        

        1. find

         find 方法可以在一个较长的字符串中查找子字符串。它返回子串所在位置的最左端索引。如果没有找到则返回 -1。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> 'With no moo-moo here, and a moo-moo there'.find('moo')  

  2. 8  

  3. >>> title = "Monty Python's Flying Circus"  

  4. >>> title.find('Monty')  

  5. 0  

  6. >>> title.find('Python')  

  7. 6  

  8. >>> title.find('Zirquss')  

  9. -1  

         find 方法还可以接受可选的起始点和结束点参数:



[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> subject = '$$$ Get rich now!!! $$$'  

  2. >>> subject.find('$$$')  

  3. 0  

  4. >>> subject.find('$$$'1)  

  5. 20  

  6. >>> subject.find('!!!')  

  7. 16  

  8. >>> subject.find('!!!'016)  

  9. -1  

         由起始和终止值指定的范围(第二和第三个参数)包含第一个索引,但不包含第二个索引。


         2. join

         join 方法用来在队列中添加元素。需要添加的队列元素都必须是字符串。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> seq = ['1''2''3''4''5']  

  2. >>> sep = '+'  

  3. >>> sep.join(seq)  

  4. '1+2+3+4+5'  

  5. >>> dirs = '''usr''bin''env'  

  6. >>> '/'.join(dirs)  

  7. '/usr/bin/env'  


         3. lower

         lower 方法返回字符串的小写字母版。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> 'Trondhe Hammer Dance'.lower()  

  2. 'trondhe hammer dance'  

         和 lower 方法相关的是 title 方法,它会将字符串转换为标题――也就是所有单词的首字母大写,而其他字母小写。



[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> "that's all folks".title()  

  2. "That'S All Folks"  


         4. replace

         replace 方法返回某字符串的所有匹配项均被替换之后得到的字符串。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> 'This is a test'.replace('is''eez')  

  2. 'Theez eez a test'  


         5. split

         split 方法将字符串分割成序列。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> '1+2+3+4+5'.split('+')  

  2. ['1''2''3''4''5']  

  3. >>> '/usr/bin/env'.split('/')  

  4. ['''usr''bin''env']  

  5. >>> 'Using the default'.split()  

  6. ['Using''the''default']  

         如果不提供任何分隔符,程序会把所有空格作为分隔符(空格、制表、换行等)。


         6. strip

         strip 方法返回去除两侧(不包括内部)空格的字符串。


[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> '         internal whitespace is kept        '.strip()  

  2. 'internal whitespace is kept'  

          也可以指定需要去除的字符,将它们列为参数即可。



[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. >>> '*** SPAM * for * everyone!!! ***'.strip(' *!')  

  2. 'SPAM * for * everyone'  

          这个方法只会去除两侧的字符,所以字符串中的星号没有被去掉。


五、字符串长度

通过内置方法len()来计算字符串的长度,注意这个计算的是字符的长度。
aa = 'afebb'
bb = '你'
print len(aa)
print len(bb)


六、字符串与数字相互转换,string模块

  import string

  string.atoi(str[,base])  //base为可选参数,表示将字符转换成的进制类型

  数字转换成字符串可简单了,直接用str()

 string.atol(s[,base]) #转成long 
 string.atof(s[,base]) #转成float 

6.字符与ASCII转换

  char->ascii  ord()
  ascii->char  chr()

相关文章
相关标签/搜索