你好,我是goldsunC
让我们一起进步吧!
字符串操作与处理
字符串是编程语言中经常会遇见的东西,而字符串又和那些编程语句什么的不太一样,我们可能需要对一个字符串进行各种各样的处理,后面我将给出我整理的一些常用的对字符串进行处理的方法。
字符串创建
将一系列字符包裹在一对单引号或者双引号中即可创建字符串,就像这样:
>>> 'I am goldsunC'
'I am goldsunC'
>>> "I am goldsunC"
'I am goldsunC'
首先,不管你是用单引号还是双引号创建的字符串,在shell中输出的均为单引号的字符串,而实际上单引号和双引号创建出的字符串没有实质性不同,那为什么不规范成一种创建格式呢?因为它有一点作用,试想,假如你的字符串是一段话,里面还包括引号,比如:
>>> 'I said :"I am goldsunC"'
'I said :"I am goldsunC"'
这样就体现了有两种字符串的好处了:使得我们可以创建本身就含有引号的字符串。
我们都知道,Python语言中有四种数据类型,分别是:
布尔型、整型、浮点型、字符串型
布尔型:只表示真假,只有True和False两种取值。一般为逻辑表达式形式。
整型:整数,如1、3、5等。
浮点型:即带小数点的类型,如1.23、1.0e8等。
字符串型字符组成的序列,如"I am goldsunC",像字母、数字、空格等都可以作为字符。
因为在编程语言中经常会将一些对象赋值给一些变量,如果你想查看某个变量的类型,只需要这样输入即可:
type(variable)
#For example
>>> type(2)
>>> type(1+1<5)
# bool即为布尔型。
>>> type(1.23)
>>> type('I am goldsunC')
同时,你也可以将其他类型的数据转换为字符串类型,如下:
# 将整型转换为字符串类型
>>> str(100)
'100'
对浮点型来说转化为字符串是和整型一致的,布尔型也可以转化为字符串,但是可能无法转化为你想要的字符串,因为布尔型只有两种取值,你可以试着转化一下,会有下面的结果:
>>> str(1+1<5)
'Ture'
字符串处理
字符串相接
当你拥有两个字符串:'I am '、'goldsunC',你想把后者加在前者的后边成为一个新字符串'I am goldsunC',在Python语言中这个操作非常简单,你只需要输入:
>>> 'I am '+'goldsunC'
'I am goldsunC'
#当然,你也可以这样:
>>> a = 'I am '
>>> b = 'goldsunC'
>>> a+b
'I am goldsunC'
字符串复制
复制相同的已有字符串,用 '*' 即可,如:
>>> 'goldsunC' *3
'goldsunCgoldsunCgoldsunC'
提取字符串中的字符
提取字符串中的字符一般用方括号[]来解决
如字符串 'goldsunC' ,你如果想要提取出来其中的第四个字符d,那么你只需要输入:
>>> 'goldsunC'[3]
's'
你可能会想,为什么方括号中的索引值是3,而明明字符d是字符串中的第4个字符啊,而实际上,方括号中的索引值并不是代表你要提取的第几个字符,它的含义是你要提取的字符相对于其所在字符串中第一个字符的偏移量(向右侧偏移为正),对一个字符串来说,其中的第一个字符相对于第一个字符的偏移量为0,第二个的偏移量为1,以此类推,同样的,偏移量也可以为负数,即向左偏移,这也体现了Python语言聪明的一点,以上述字符串 'goldsunC' 为例:
>>> A = 'goldsunC'
>>> A[0]
'g'
>>> A[7]
'C'
>>> A[-1]
'C'
而实际上有时候我们不止需要提取一个字符,我们可能需要某个字符串中的半串,亦或者需要其中的某一个片段,那我们应该怎么做呢,没错,还是需要方括号[]来帮助我们:
#还是以'goldsunC'为例:
#假定我们需要提取它中的 sun ,你需要这样做:
>>> 'goldsunC'[4:7]
'sun'
>>> 'goldsunC'[-4:-1]
'sun'
#亦或者你想每隔两个步长提取一个字符:
>>> 'goldsunC'[0:-1:2]
'glsn'
总结:通过上边的例子我们不难总结出来对字符串使用方括号提取字符的规律。首先,其有效引用格式为[start : end : step],其中:
start : 提取字符串的起始偏移位
end : 提取字符串的终止偏移位(不包括此位,提取到"end-1")
step : 提取步长。
其中除了start和end之间的冒号之外,所有参数均可省略。[:] : 提取从开头到结尾的整个字符串。
[start:] : 从start提取到结尾。
[:end] : 从开头提取到 end - 1。
以此类推,亲爱的你会举一反三吗哈哈哈。
另外需要注意的一点是:Python语言在提取操作中对于无效偏移位的容忍程度非常大,即在提取时,小于一个字符串起始位置的偏移量会被当作0,而大于终止位置的偏移位会被当做 -1 。
获取字符串长度
字符串长度即是字符串中包含的字符数,比如空格等字符也算入内,获得字符串的长度对我们对它进行相关处理非常有用,比如刚才学会的字符提取。而获得字符串长度的方法很简单,就像得到一个对象的数据类型一样,你只需要输入:
>>> len('goldsunC')
7
>>> len('I am goldsunC')
13
分割字符串
在之前的各种方法,在我看来都算是广义的操作方法,直接对字符串本身进行操作即可,而到这里,我们就需要用一些函数来实现我们想要的功能了,当然,你也可以选择不用函数,自己去编写程序获得你想要的结果,可是放着已经有的车不去开而去选择自己造一辆车是非常不明智的,正是各种函数的存在才极大的增加了我们的工作效率。
分割字符串需要用到split()函数,圆括号里面的参数为分割符号,如果为空则默认分割符号为空白字符即:换行符、空格、制表符(Tab)。
举例:
# 变量赋值
>>> str ='I am goldsunC. And everyone says I am handsome.'
# One
>>> str.split('.')
['I am goldsunC','And everyone says I am handsome','']
# Two
>>> str.split()
['I', 'am', 'goldsunC.', 'And', 'everyone', 'says', 'I', 'am', 'handsome.']
# Three
>>> str.split('d')
['I am gol', 'sunC. An', ' everyone says I am han', 'some.']
从上边的例子我们很容易知道split()函数的使用方法,就是圆括号里面是什么字符,就将原字符串以什么字符分割而已,很好理解。
合并字符串
既然有分割字符串,那么肯定有合并字符串,合并字符串的函数是join()函数,和分割函数split()相比,合并函数的引用方法似乎有些奇怪。
举例:
#创建链表
>>> str_list = ['I', 'am', 'goldsunC.', 'And', 'everyone', 'says', 'I', 'am', 'handsome.']
# One
>>> ' '.join(str_list)
'I am goldsunC. And everyone says I am handsome.'
# Two
>>> ','.join(str_list)
'I,am,goldsunC.,And,everyone,says,I,am,handsome.'
通过例子我们可以看出来,奇怪的地方在于引用方法,join()函数的圆括号里面不是合并符,而是我们要合并的对象,合并符号在函数之前,不过可能是Python语言这样设置是为了让我们有更好的理解吧,不管怎样,记住就得了哈哈哈。
常用字符串操作的函数
前边大致介绍了部分对于字符串的简单操作方法,而实际上,对字符串的操作还有很多很多,而Python中也提供了很多很多可让我们使用的处理函数,其中分割函数和合并函数被我单独拿出来讲的原因是因为它们跟其它的函数有些不同而且更长时间会使用到,接下来我列出一些其它的对字符串操作比较常用的函数。
函数名称作用startswith('str')判断是否以str开头,返回值为'True'或者'False'endswith('str')判断是否以str结尾,返回值为'True'或者'False'find('str')查看字符串中第一次出现str的偏移位rfind(‘str’)查看字符串中最后一次出现str的偏移位count('str')返回字符串中出现str的总次数isalnum('str')判断字符串中的所有字符是否都为字母或者数字(注意空格也是字符)capitalize()将字符串首字母变成大写title()将字符串中所有单词的开头字母变成大写upper()将字符串中所有字母变成大写lower()将字符串中所有字母变成小写swapcase()将所有字母的大小写转换center(num)将字符串在num个字符位里居中ljust(num)将字符串在num个字符位里左对齐rjust(num)将字符串在num个字符位里又对齐replace(str1,str2,num)将字符串中的str1更换成str2,num参数可省略,如果省略则默认只更换第一处,不省略则更改num处。strip('str')删除字符串首和尾的strlstrip('str')单删除字符串左侧(首)的strrstrip('str')单删除字符串右侧(尾)的str
当然,关于字符串处理的函数还有很多,这些只是其中的一部分,如果有其它需求还得自己去找才行,当然见得多用的多了才更好。