python(4): string的操作
对于一个字符串,最基本的操作就是连接、截取。在python中,’+‘是字符串连接符,截取则要用到python一个强大功能slice,也就所谓的切片,很形象。在’+‘连接字符串的时候,需要注意一点,“+”不能用来连接一个字符串和一个数字,因为“+”也同时是数字在加法运算符,如果你写出4+'times',那么电脑是应该把4变成字符串呢,还是应该把’times‘变成数字呢?这就成问题了,所以这是不允许的。同时就跟乘法是加法的一种形式一样,字符串也可以用”*“来做多重连接的运算。
切片有多种形式,各有各的用处:
str[0:5]
- str[:]
- str[4:]
- str[:-3]
- str[2]
- str[1:9:2]
第一种形式其实就是切片的基本形式,截取第一位到第四位的字符。注意:在切片中,不包括后一个数字代表的字符。剩下的都是切片的最种形式,第二种表示“截取”这个字符串的全部字符,可以这样理解,":"前的“空”代表字符串开头,“:”后的”空“代表字符串的尾。这样的话第三种的意思是从第五个字符到结尾。这里需要注意的是片的标号是左边从0开始算的,右边从-1开始算的,为什么右为不也从零开始呢?因为数学上没有”-0“的概念,只要这样将就了。第四种表示从头开始到倒数第三个字符之前,不包括倒数第三个字符。第五种表示,截取一个字符就是第三个字符,标号为2。最特殊的就是第六种,这是一种新加的功能,它的标号有三个,前两个很清楚是什么意思,最后一个表示步长。意思是取出字符串的第二到第8位,以2的步长取出字符。比如str='0123456789',str[1:9:2]的结果是’1357‘,str[1:9:-1]的结果是'87654321'。这也是一个技巧可以用str[::-1]创造一个与原字符串顺序相反的字符串。
前面说到,是不允许用”+“连接字符串和数字的,如果有这种需求,也不是没有办法,就是要给电脑明确要把数字转成字符串,还是要把字符串转成数字。
- 字符串转成数字: int()
- 数字转成字符串: str()
- 字符串转成浮点数: float()
其实,前面也说过int()和str()函数,int()函数把参数转成十进制的整数,str()把参数转成ASCII编码的字符串。
对于字符串还有一个比较特殊的运算:in,可以用来判断一个字符串是否包含在另一个串中。也可结合for循环,用来遍历字符串的第一个字各个符。比如:
- str='hello world'
- if 'el' in str:
- print 'yes'
- else:
- print 'no'
- for char in str:
- print char,这个小程序会输出,’yes'和‘hello world'。第2行用于判断字符串是否在str中,结果显然是ture,所以输出'yes'。第六行中char是一个变量名,意思是遍历str的每个字符,并且每次循环都把一个字符赋给变量char并输出。第7行的最后‘,’要注意,print在输出时,会在每次输出后加上‘\n’,如果这样的话,输出的'hello world'就会是坚着的,加上’,‘可以避免出现这种情况。
重要提示,’‘字符在string类型中好像很特殊。比如一个字符串为L=“test”。 那么:
L.count('') ===> 5
'' in L ===> True
L.index('') ===> 0
L.find('') ===> 0
只能理解为字符串L实际上是 ''+'t'+''+'e'+''+'s'+''+'t'+''。这样的话第一个''可以用L[0,0],第二个''可以用L[1:1]...表示