字符串是及其重要的数据类型,对于它,我们首先要明确两点,一,它是一种序列,二,它是不可变的。既然它是序列,那么有了list的基础,对于字符串的操作方式就完全可以借鉴list

一、通用序列操作

通过一个简单的例子来做演示

>>> str_value = 'python'
>>> str_value[0]
'p'
>>> str_value[0:2]
'py'
>>> len(str_value)
6
>>> max(str_value)
'y'
>>> min(str_value)
'h'
>>> 'h' in str_value
True

上图中演示的5种操作,是序列通用的,既可以用于list,也可以用于tuple,字符串自然也是可以的。

类型转换,字符串与int,long,float之间的转换已经在前面的文章里有过介绍,不再赘言。

二、重要的字符串方法

字符串是如此的重要,所以它拥有非常多的方法,篇幅有限,我只讲解几个重要的方法

1、子串查找

定义一个字符串,其值为'python is a very good programing language'。

>>> s = 'python is a very good programing language'
>>> s.find('is')
7
>>> s.find('haha')
-1

当子串找到时,返回的是字符串开始的索引号,找不到时返回的是-1,find函数还可以指定查找的起始位置和结束位置。

>>> s.find('is',3)
7
>>> s.find('is',3,9)
7

2、split方法

在split方法里指定一个分隔符,字符串会根据这个分隔符进行分割

>>> s = 'python is a very good programing language'
>>> lst = s.split(' ')
>>> lst
['python', 'is', 'a', 'very', 'good', 'programing', 'language']
>>> ' '.join(lst)
'python is a very good programing language'

我这里用空格做为分隔符,英文的语句中,单词之间都是用空格分割的,因此直接使用分隔符分割就可以把单词分开,非常简单。可我们的中文想做同样的事情却非常难,因为我们的语句中,所有的词都是连在一起的,有一个非常好用的分词模块,叫jieba分词,你可以用pip安装后使用,体验一下中文分词的乐趣。

上图的例子中,我最后使用了join方法,它的作用是以某个字符串连接一个list。lst中的元素是英文单词,' '.join(lst)的意思就是用空格把lst中的元素连接起来,返回的结果和变量s是一样的,你也可以试试用别的字符串来连接,比如'%'.join(lst),join方法是split的逆方法。

3、 replace 替换字符串

>>> s = 'python is a very good programing language'
>>> s1 = s.replace('python','c++')
>>> s1
'c++ is a very good programing language'
>>> s
'python is a very good programing language'

使用replace方法,python被替换成了c++ ,有两个地方需要特别关注一下,一是replace会替换所有符合要求的子串,二是原有的字符串不会发生改变,因为字符串是不可变的,s1是s字符串调用replace方法后生成的一个新的字符串。

4、 startswith和endswith

>>> str_value = 'python is good'
>>> str_value.startswith('python')
True
>>> str_value.endswith('python')
False

startswith判断字符串是否以某个子串开头,endswith判断字符串是否以某个子串结尾。

三、字符串格式化

把你们在其他教程里看到的格式化方法统统忘掉,我即将讲的方法,是经过工作实际检验的,最有利于编程而且最不容易出错的方法。

>>> s = '{name} is a programing language'
>>> s1 = s.format(name='python')
>>> s1
'python is a programing language'
>>> s
'{name} is a programing language'

所谓格式化,就是字符串里有一部分内容不是固定不变的,而是需要根据不同情况填充不同的值。那么遇到这类情况,请用我上图中演示的方法,需要变化的地方,用中括号括起来,里面随便起一个名字,当然有意义最好,之后调用字符串的format函数,注意,在这个函数里,你需要指明需要变化的值是什么,在字符串s中,我写了一个{name},那么在format函数的参数里,我就必须指明,这个name要替换成谁,也就是name = 'python'   ,这种方法的好处在于,你清楚的知道字符串的格式,也清楚的知道谁替换成谁,简单明了。