Python学习笔记(三)

Published: 2013-12-11 Category: python Tags: python

Python学习三

在学习python之前,个人建议先看下维基的python介绍。

经过漫长的第二部分的学习,终于来到了第三部分,不知第二部分的内容大家掌握的如何。第三部分主要讲解python的字符串极其相关用法。

使用字符串

基本的字符串操作

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

字符串的格式化在这里就不记录了,我们进入到字符串相关方法


字符串方法实在太多,在这里只介绍一些特别有用的,虽然字符串方法完全来源于民string模块,但这个模块还包括一些 不能作为字符串方法使用的常量和函数。maketrans函数就是其中之一,后面会将它和translate方法一起介绍。下面是一些 有用的字符串常量。

>>> import string #引入string模块
>>> string.digits #包含0-9的字符串
'0123456789'
>>> string.letters #包含所有字符(大小写)
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> string.lowercase #包含所有小写字母
'abcdefghijklmnopqrstuvwxyz'
>>> string.uppercase #包含所有大写字母
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.printable #包含可打印字符的字符串
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation #包含所有标点符号的字符串
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> 

#find方法用于在一个字符串中查找子字符串。返回子字符串所在位置的最左端索引。
>>> str = 'asfasfafasfffdfd';
>>> str.find('ffff'); #找不到返回-1
-1
>>> str.find('fffd'); #如果返回的是0,则标明在索引为0的位置找到了字符串。
10
#这个函数可以提供起始点和结束点
>>> str = '123124124124'
>>> str
'123124124124'
>>> str.find('124',3)
3
#特别注意:起始点和终止点所指定的范围有一个惯例,就是包含起始点但不包含终止点!

#join方法是非常重要的字符串方法,它是split的逆方法。用来在队列中添加元素。
>>> seq = [1,2,3,4,5]
>>> tag = '+'
>>> seq.join(tag)

Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    seq.join(tag)
AttributeError: 'list' object has no attribute 'join'
>>> seq = ['1','3','a','s']
>>> tag.join(seq)
'1+3+a+s'
#可以看出,需要添加的队列元素必须是字符串

#lower函数返回字符串的小写。这个例子就不写了。当想编写“不区分大小写”的代码的话这个方法就排上用场了
#解决方法就是在存储和搜索时都将字符串转换成小写。
#和lower相关的是title方法,它会将单词首字母大写。来自string模块的函数string.capwords()也具备同样的效果
>>> 'what\'s are you dong,jack'.title()
"What'S Are You Dong,Jack"
#可能不是你想要的结果。

#replace方法返回某字符串的所有匹配项被替换后的字符串
>>> str='123124124124'
>>> str.replace('124','hhs')
'123hhshhshhs'
>>> 

#split也是一个很重要的方法,他是join方法的逆方法,用来将字符串分割成序列。
>>> str
'123124124124'
>>> '+'.join(str)
'1+2+3+1+2+4+1+2+4+1+2+4'
>>> '+'.join(str).split('+')
['1', '2', '3', '1', '2', '4', '1', '2', '4', '1', '2', '4']
#注意:如果不提供任何分割符的话,它会默认将空格当成分割符。

#strip方法返回去除两侧空格的字符串。一般与lower方法结合使用很不错的。
>>> '   asfasf   '.strip()
'asfasf'
>>> '@@@#4124 fasf ***&^##@#('.strip('@(') #也可以指定需要去除的字符将他们列为参数就可以了
'#4124 fasf ***&^##@#'
>>> 

#translate函数和replace方法一样,可以替换字符串中的某些部分,但translate只能处理单个字符
#它的优势在于可以同时进行多个替换,有时它的效率比replace高很多。
#从string模块中调出转换表,然后使用maketrans函数替换。maketrans函数接收两个等长的参数,表示前面的参
#用后面同位置的参来替换,如下:
>>> import string
>>> table=string.maketrans('cs','kz')[97:123] #截取小写字母部分
'abkdefghijklmnopqrztuvwxyz'
#已经将选取的部分转换了c换为k,s换为z。
#创建了table这个表之后,可以将它作为translate方法的参数。
>>> 'this is a incredable test'.translate(table) #注意这里的table必须是256位,即table=string.maketrans('cs','kz')
'thiz iz a inkredable tezt'
#translate第二个参数可选,表示需要删除的字符串。如删除所有空格translate(table,'')

Fork me on GitHub