zoukankan      html  css  js  c++  java
  • Python 字符串

    字符串是 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)方法:通过指定分隔符对字符串进行分割并返回一个列表,默认分隔符为所有空字符,包括空格、换行( )、制表符( )等。类似于 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])方法:按照行(' ', ' ', ')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

    >>> a
    'ab!!
    AAA
    BBB
    23'
    >>> a.splitlines()                            #默认以 '
    、
    、
    '进行分割
    ['ab!!', 'AAA', 'BBB', '23']
    >>> a.splitlines(True)                      #添加了参数 'True',会保留分割字符
    ['ab!!
    ', 'AAA
    ', 'BBB
    ', '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'
    >>> 
    

      

  • 相关阅读:
    用WebStorm运行Vue项目
    秋招圆满结束
    最新的秋招进度 10月21号
    来更新一下秋招的进度~
    华为三面完进池子啦~9月17日
    C++ 迭代器失效问题
    C++类相关问题(空类、多态、重载、继承)
    C++各种变量、类型的存储位置
    写一个面试中场景题的总结
    明天要面阿里HR面了
  • 原文地址:https://www.cnblogs.com/longxd/p/8494180.html
Copyright © 2011-2022 走看看