longxd

导航

 

字符串是 Python 中常用数据类型。以下我们创建一个简单的字符串st1。

>>> st1 = 'abc123!'
>>> type(st1)
<class 'str'>
>>> dir(st1)     #查看字符串里面的方法,对应可以使用help()查看每个方法的详情。

 


 

字符串拼接:

 


 

使用“+”进行拼接,定义了a、b、c三个变量。示例中a + ' & ' + b + c,注意 '  &  ' 的符号&两边是有空格的,同时b + c是连接在一起的没有空格。

>>> a = 'hello'
>>> b = 'python'
>>> c = '!'
>>> a + ' & ' + b + c
'hello & python!'
>>>  

格式化字符串 %s,同样定义a = 'i' 、b = 'love' 、 c = 'python' 三个变量。'%s %s %s' % (a,b,c),这里的3个%s 分别代表后边的a、b、c三个变量。注意%s与%s之间有个空格,所以 '%s %s %s' % (a,b,c) 的输出结果是 'i love python'

>>> a,b,c = 'i','love','python'
>>> '%s %s %s' % (a,b,c)
'i love python'
>>> '%s**%s**%s**' % (a,b,c)      #占位符之间可以填充任何字符。
'i**love**python**'
>>> 

使用自带方法 join()进行拼接,注意join()方法的括号里面只能放一个对象,所以定义的a、b、c三个变量需要用(a,b,c)括号括起来。中间插入的符号 "*#*"会添加在两个元素之间

>>> a,b,c = 'i','love','python'
>>> '*#*'.join((a,b,c))
'i*#*love*#*python'
>>> 

使用方法format(),格式是 ' {}  {} {}'.format(a,b,c),三个{}符号分别对应a、b、c三个对象,必须一 一对应;可以在 {}符号的前后以及中间填写元素,详情如下:

Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> a=['a1','a2','a3']
>>> b=['b1','b2','b3']
>>> c=['c1','c2','c3']
>>> "*{} ** {} ** {}*".format(a,b,c)     #三个{}{}{}符号对应a、b、c三个元素,可以在{}前后填充对象
"*['a1', 'a2', 'a3'] ** ['b1', 'b2', 'b3'] ** ['c1', 'c2', 'c3']*"
>>> 
>>> "{2}{1}{0}".format(a,b,c)            #可以在{}符号中间填写对象的索引
"['c1', 'c2', 'c3']['b1', 'b2', 'b3']['a1', 'a2', 'a3']"
>>> 
>>> "{[1]} {[2]} {[0]}".format(a,b,c)    #索引[1]指列表a=['a1','a2','a3']中的元素a2
'a2 b3 c1'
>>> 
>>> "{[1][0]} {[2][0]} {[0][0]}".format(a,b,c)        #索引[1][0],[1]指列表a=['a1','a2','a3']中对象'a2',[0]指对象'a2'里面的元素‘a’.
'a b c'
>>> 
>>> "{0[0][1]} {2[2][1]} {1[1][1]}".format(a,b,c)     #索引{0[0][1]},里面的"0"索引指的是format(a,b,c)的元素a,[0]指列表a=['a1','a2','a3']中的对象'a1',[1]指对象'a1'里面的元素‘1’.
'1 3 2'
>>> 

 

字符串常用方法: 


capitalize()方法:将字符串的第一个字符转换为大写。

>>> st1 = 'a1B2cdef!'
>>> st1.capitalize()
'A1b2cdef!'
>>> 

center(width,  [fillchar])方法:返回一个指定的宽度width居中的字符串,fillchar 为填充的字符,默认为空格。width指字符串的长度,如图中的20;[fillchar]之填充的字符串,[ ]是可选参数。

>>> st1
'a1B2cdef!'
>>> st1.center(20,'*')
'*****a1B2cdef!******'
>>> 

count(sub[, start[, end]]) 方法:用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。sub之需要统计的字符,如 'a';  [, start[, end]]指开始与结束的索引,[ ]可选参数。

>>> st1 = 'a1a2a3Aa4a5'
>>> st1.count('a')            #统计字符 'a' 在字符串st1里面出现的次数
5
>>> st1.count('a',3)          #统计字符 'a' 在字符串st1里面的第三个元素开始到结尾出现的次数('2a3Aa4a5' )
3
>>> st1.count('a',3,7)        #统计字符 'a' 在字符串st1里面的第三个元素开始到第7个元素出现的次数('2a3A'),可以去掉第三个元素,不能取到第7个元素。左闭右开。
1
>>> 

encode(encoding='utf-8', errors='strict') 方法:以 encoding 指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案。

>>> st1
'a1a2a3Aa4a5'
>>> st1.encode('UTF-8','strict')
b'a1a2a3Aa4a5'
>>> 

endswith(suffix[, start[, end]]) 方法:用于判断字符串是否以指定后缀结尾,如果是以指定的后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。

>>> st1
'a1a3a5Aa8a10'
>>> st1.endswith('0')              #判断是否以字符 '0'结尾
True
>>> st1.endswith('a10')          #判断是否以字符 'a10'结尾
True
>>> st1.endswith('a1tt0')        #判断是否以字符 'a1tt0'结尾,明显是没有字符 'tt'
False
>>> st1.endswith('A',3,6)        #判断字符串st1在第3个索引的元素以及到第6个索引的元素是否以字符 'A'结尾,字符串st1的索引6的值是取不到 'A'的,第7个索引才可以取到'A'
False
>>> st1.endswith('A',3,7)
True
>>> 

find(sub[, start[, end]]) 方法:检测字符串中是否包含子字符 ,如:'a';如果指定 start(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

>>> st1 = 'b1a3a5Aa8a10'
>>> st1.find('a')              #查找字符串st1中字符 'a'的索引值。
2
>>> st1.find('a',3)           #查找字符串st1索引为3以后的元素('3a5Aa8a10') ,里面字符 'a'的索引值。
4
>>> st1.find('a',5,7)        #查找字符串st1索引为5到索引为7以内的元素('5A'),是取不到索引为7的元素。
-1
>>> st1.find('a',5,8)        ##查找字符串st1索引为5到索引为8以内的元素('5Aa')。
7
>>> 

index(sub[, start[, end]]) 方法:和上面find()方法一样,只不过如果sub不在 string中会报一个异常。

>>> st1
'b1a3a5Aa8a10'
>>> st1.index('a')              #查找字符 'a'的索引
2
>>> st1.index('a',5)           #在字符串索引5以后的元素里面查找字符 'a'的索引('5Aa8a10')
7
>>> st1.index('a',0,3)        #在字符串索引为0到3以内的元素里面查找字符 'a'的索引('b1a')
2
>>> st1.index('a',0,2)        #在字符串索引为0到2以内的元素里面查找字符 'a'的索引('b1'),如果字符不在字符串中会报一个异常
Traceback (most recent call last):
  File "<pyshell#128>", line 1, in <module>
    st1.index('a',0,2)
ValueError: substring not found
>>> 

isalnum()方法:字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False。

>>> a = 'aaa'            
>>> a.isalnum()
True
>>> a = 'a1'
>>> a.isalnum()
True
>>> a = 'a1*'             #里面有一个特殊字符 ' * '
>>> a.isalnum()
False
>>> 

isalpha()方法:如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False

>>> a = 'abc'                  #字符串里面的元素全部是字母。
>>> a.isalpha()
True
>>> a = 'abc123'
>>> a.isalpha()
False
>>> a = 'abc!@#'
>>> a.isalpha()
False
>>> 

isdigit() 方法:检测字符串是否只由数字组成。

>>> a = 'abc'
>>> a.isdigit()
False
>>> a = '123'     #全是正整数
>>> a.isdigit()
True
>>> a = 'a1b1'
>>> a.isdigit()
False
>>> a = '1,2,1.4'
>>> a.isdigit()
False
>>> a = '-1'
>>> a.isdigit()
False
>>> 

isidentifier()方法:检测字符串是否是字母开头

>>> a = 'a123'
>>> a.isidentifier()
True
>>> a = '1abc'      #不是字母开头
>>> a.isidentifier()
False
>>> 

 islower() 方法:检测字符串是否由小写字母组成。

>>> a = 'abc123!'       #全部是小写字符
>>> a.islower()
True
>>> a = 'abc123F'
>>> a.islower()
False
>>> 

isnumeric()方法:判断字符串是否中只包含数字字符 。

>>> a = '123'
>>> a.isnumeric()
True
>>> a = 'a123b!'
>>> a.isnumeric()
False
>>> 

isspace()方法: 判断字符串中只包含空格

>>> a = 'abc'
>>> a.isspace()
False
>>> a = 'a b c'
>>> a.isspace()
False
>>> a = '     '
>>> a
'     '
>>> a.isspace()
True
>>> 

istitle() 方法:检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。

>>> a = 'Abc1'
>>> a.istitle()
True
>>> a = 'Abc1d'              #里面的字符有个 '1',这样会导致后边的字符 'd'被认为首字母是小写
>>> a.istitle()
False
>>> a = 'This Is String'
>>> a.istitle()
True
>>> a = 'Abc1d'
>>> a = 'Abc1Def'             #同样这个字符里面也有 '1',但是后边的 'D'是大写。
>>> a.istitle()
True
>>> 

isupper() 方法:检测字符串中所有的字母是否都为大写。 

>>> a = 'ABCD'              #全部为大写字母
>>> a.isupper()
True
>>> a = 'ABCD123!'       #只判断字母,所以里面的 '123!'不影响结果
>>> a.isupper()
True
>>> a = 'ABCDefg'
>>> a.isupper()
False
>>>     

join(iterable)方法:将序列中的元素以指定的字符连接生成一个新的字符串。

>>> a = 'abcd'
>>> '*1*'.join(a)          #把字符 '*1*'添加到字符串 a中,依次插入每个元素
'a*1*b*1*c*1*d'
>>> a = 'a1','a2'
>>> '*1*'.join(a)          #字符串不一样
'a1*1*a2'
>>> a = 'a','b','c','d'
>>> '-'.join(a)
'a-b-c-d'
>>> 

ljust(width[, fillchar])方法:返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。

>>> a.ljust(30)           #返回的字符串后边多了很多'空格',因为width参数设置为30
'a2f                           '
>>> a.ljust(30,'$')      #使用 '$'符号替换之前的空格
'a2f$$$$$$$$$$$$$$$$$$$$$$$$$$$'
 >>> len(a.ljust(30))  #查看字符串是长度
30

lower()方法:转换字符串中所有大写字符为小写

>>> a = 'aA1BcdFg!'
>>> a.lower()
'aa1bcdfg!'
>>> 

lstrip([chars])方法:截掉字符串左边的空格或指定字符后生成的新字符串。

>>> a = ' abc123!'                #目前字符串的左边有空格
>>> a.lstrip()
'abc123!'
>>> a = 'abc123!'                 
>>> a.lstrip('ab')                   #截取掉字符串中指定的字符 'ab'
'c123!'
>>> 

replace(old, new[, count])方法:把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

>>> a = 'aabbccdd'
>>> a.replace('aa','AA')       #把小写的 'aa'替换成大写的 'AA'
'AAbbccdd'
>>> a                                #需要使用变量接,不会影响最终结果
'aabbccdd'                            
>>> a = 'aabbccddaaga'      
>>> a.replace('a','A',3)        #参数里面的 3,指提供3次
'AAbbccddAaga'
>>> a
'aabbccddaaga'
>>> 

rfind(sub[, start[, end]])方法:返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1。

>>> a = 'ac1cddcd!'
>>> a.rfind('c')             #查找字符 'c'
6
>>> a.rfind('c',1,4)        #查找字符 'c',在字符串a中索引(1,4)里面找
3
>>> a.rfind('cc')            #查找字符 'cc',结果是找不到的。
-1
>>> 

rindex(sub[, start[, end]])方法: 返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。 

>>> a
'ac1cddcd!'
>>> a.rindex('1')              #查找字符 '1'的索引
2
>>> a.rindex('c',0,2)         #查找字符 'c'的索引,在最开始到第二个索引位置里面的字符中搜索
1
>>> a.rindex('cc')                #与rfind的区别是,没有匹配到字符后会报错。
Traceback (most recent call last):
  File "<pyshell#60>", line 1, in <module>
    a.rindex('cc')
ValueError: substring not found
>>> 

rjust(width[, fillchar])方法:返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。

>>> a
'ac1cddcd!'
>>> a.rjust(20)     #返回20个字符,默认使用 '空格' 占位
'           ac1cddcd!'
>>> a.rjust(20,'$')  ##返回20个字符,使用 '$' 占位
'$$$$$$$$$$$ac1cddcd!'
>>> 

rpartition(sep) -> (head, sep, tail)方法:搜索一个字符,把他们分成三部分。

>>> a = 'ac1cddcd!'
>>> a.rpartition('c') #从最后一个 'c'开始分为三部分 ('ac1cdd', 'c', 'd!') >>> a = 'a1b2c2!!' >>> a.rpartition('a') #字符 'a'前面没有其他字符,所以把没有的部分当成一个 ' '(空格)分割。 ('', 'a', '1b2c2!!') >>> a.rpartition('1') ('a', '1', 'b2c2!!') >>> a.rpartition('FF') ('', '', 'a1b2c2!!') >>>

rsplit(sep=None, maxsplit=-1)方法:通过指定分隔符对字符串进行分割并返回一个列表,默认分隔符为所有空字符,包括空格、换行(\n)、制表符(\t)等。类似于 split() 方法,只不过是从字符串最后面开始分割。

>>> a = 'a cc cc 12!' 
>>> a.rsplit()             # 默认以空格进行分割
['a', 'cc', 'cc', '12!']
>>> a.rsplit('c')          #以指定的字符 'c'进行分割
['a ', '', ' ', '', ' 12!']
>>> a.rsplit('c',2)        #以指定的字符 'c'进行分割,并且从后面开始分割 '2'次。
['a cc ', '', ' 12!']
>>> 

rstrip([chars])方法:删除 string 字符串末尾的指定字符(默认为空格)

>>> a ='abc '
>>> a.rstrip()         #默认删除字符串最后一位的 '空格'
'abc'
>>> a ='abcd'        #删除最后一位指定的字符 'd'
>>> a.rstrip('d')
'abc'
>>> 

split(sep=None, maxsplit=-1)方法:以 sep 为分隔符截取字符串,如果maxsplit 有指定值,则仅截取 maxsplit 个子字符串。

>>> a = 'ab*%%%@cd'
>>> a.split('%')                       #以指定的字符 '%'进行分割
['ab*', '', '', '@cd']
>>> a.split('%',2)                    #以指定的字符 '%'进行分割,只分割 '2'次
['ab*', '', '%@cd']
>>> 

splitlines([keepends])方法:按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

>>> a
'ab!!\nAAA\rBBB\n23'
>>> a.splitlines()                            #默认以 '\n、\r\n、\n'进行分割
['ab!!', 'AAA', 'BBB', '23']
>>> a.splitlines(True)                      #添加了参数 'True',会保留分割字符
['ab!!\n', 'AAA\r', 'BBB\n', '23']
>>> a.splitlines(False)                      #添加了参数 'False'
['ab!!', 'AAA', 'BBB', '23']
>>> 

startswith(prefix[, start[, end]])方法:检查字符串是否是以 obj  开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。

>>> a = 'abcdef'
>>> a.startswith('ab')             #判断字符串 a 是否以字符 'ab'开头
True
>>> a.startswith('b')               #判断字符串 a 是否以字符 'b'开头
False
>>> a.startswith('b',1)            #判断字符串 a 是否以字符 'b'开头(从索引为 ' 1 '时开始判断)
True
>>> a.startswith('bc',1)
True
>>> a.startswith('bc',1,2)       #判断字符串 a 是否以字符 'bc'开头(从索引为 ' 1 '时开始判断[左闭右开,所以取不到索引 ' 2 '的元素])
False
>>> 

strip([chars])方法:用于移除字符串头尾指定的字符(默认为空格)。可以用一个变量接住移除后的值

>>> a=' abc '
>>> a.strip()                       #默认移除 空格
'abc'
>>> a='!abc!'
>>> a.strip('!')                    #字符串首和尾都有字符 "!",所以会同时移除 "!"
'abc'
>>> a='!abc@'
>>> a.strip('!')                     #移除字符串首部的字符 "!"
'abc@'
>>> a='!abc@'
>>> a.strip('@')                   #移除字符串尾部指定的字符 "@"
'!abc'
>>> 

swapcase()方法:用于对字符串的大小写字母进行转换。

>>> a = 'AA!8!bb'
>>> a.swapcase()       #字符串中大写的A变成小写的a,小写的b变成大写的B。其它字符不受影响。
'aa!8!BB'
>>> 

title()方法:返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())。

>>> a = 'abcd'
>>> a.title()        #首字母大写
'Abcd'
>>> 

upper()方法:转换字符串中的小写字母为大写  

>>> a = 'abcdef'
>>> a.upper()                    #小写换成大写
'ABCDEF'
>>> 

zfill(width)方法:返回长度为 width 的字符串,原字符串右对齐,前面填充0

>>> a = 'abcdef'
>>> a.zfill(10)
'0000abcdef'
>>> 

 

字符串切片与步长:


字符串切片操作(slice)可以从一个字符串中获取其中字符串的一部分。

>>> a = 'abcdefg'
>>> a[2:]                         #取前2个字符之后的元素
'cdefg'
>>> a[:2]                         #从最开始取到第2个元素
'ab'
>>> a[:]                          #从最开始取到最后一个元素
'abcdefg'
>>> a[2:5]                        #取第2个元素之后至第5个元素
'cde'
>>> a[::2]                        #在所有元素中2个2个的取(跳着取元素,比如找奇数就比较好用)
'aceg'
>>> a[::-1]                       #里面的参数'-1'  ,是指倒着取字符串里面的元素
'gfedcba'
>>> 

  

posted on 2018-03-02 17:08  longxd  阅读(171)  评论(0编辑  收藏  举报