zoukankan      html  css  js  c++  java
  • python 字符串常用方法

     Python 开发过程中,经常需要对字符串进行一些特殊处理,比如拼接字符串、截取字符串、格式化字符串等,这些操作无需开发者自己设计实现,只需调用相应的字符串方法即可。

    python 字符串分割

    [root@kube str_method]# cat demo.py 
    #coding:utf-8
    
    #拼接的第一种方式,直接将两个字符串紧挨在一起
    s = 'hello''jojo'
    print(s)
    
    s1 = 'hello'
    s2 = 'jojo'
    s3 = s1 + s2
    print(s3)
    #使用+ 号做为字符串拼接运算符
    
    a1 = 22
    a2 = '我今年:'
    a3 = s2 + str(a1)
    print(a3)
    #使用str 将数字转换为字符串,不是同一类型无法拼接
    
    b1 = 'hello'
    b2 = 'tom'
    b3 = repr(b1 + b2)
    print(b3)
    #使用 repr() 函数得到带引号的字符
    
    [root@kube str_method]# py demo.py 
    hellojojo
    hellojojo
    jojo22
    'hellotom'
    [root@kube str_method]# 

     python 截取字符串

    字符串本质上就是由多个字符组成的,Python 允许通过索引来操作字符,比如获取指定索引处的字符,获取指定字符在字符串中的位置等。

    Python 字符串直接在方括号([])中使用索引即可获取对应的字符,其基本语法格式为:

    string[index]

    除可获取单个字符之外,Python 也可以在方括号中使用范围来获取字符串的中间“一段”(被称为子串),其基本语法格式为:

    string[start : end : step]
    [root@kube str_method]# cat demo1.py 
    #coding:utf-8
    
    s = 'Configuring the BIG-IP system to log to a remote syslog server'
    print(s[1])
    #使用 [] 通过索引输出
    
    print(s[:16:4])
    #使用分割获取字符
    
    print(max(s))
    print(min(s))
    #获取最大和最小字符
    
    [root@kube str_method]# py demo1.py
    o
    Ciit
    y
     
    [root@kube str_method]# 

     

    python len() 函数获取字符串长度和字节数

    Python 中,要想知道一个字符串有多少个字符(获得字符串长度),或者一个字符串占用多少个字节,可以使用 len 函数。

    len 函数的基本语法格式为:

    len(string)
    [root@kube str_method]# cat demo2.py 
    #coding:utf-8
    
    s1 = 'Configuring the BIG-IP system to log to a remote syslog server'
    s2 = '你好吗!刘'
    
    print('s1字符长度:'+ str(len(s1)))
    print('s2字符长度:'+ str(len(s2)))
    
    [root@kube str_method]# py demo2.py 
    s1字符长度:62
    s2字符长度:5
    [root@kube str_method]#


    Python split()方法详解:分割字符串

    分割字符串的 split() 方法。

     plit() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,这些子串会被保存到列表中(不包含分隔符),作为方法的返回值反馈回来。该方法的基本语法格式如下:

    str.split(sep,maxsplit)
    此方法中各部分参数的含义分别是:
    str:表示要进行分割的字符串;
    sep:用于指定分隔符,可以包含多个字符。此参数默认为 None,表示所有空字符,包括空格、换行符“
    ”、制表符“	”等。
    maxsplit:可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxsplit+1。如果不指定或者指定为 -1,则表示分割次数没有限制。
    [root@kube str_method]# cat demo3.py 
    #coding:utf-8
    
    s = 'python split() 方法, 测试# 学习'
    
    print(s.split())
    #使用默认split() 分割符
    
    print(s.split('#'))
    [root@kube str_method]# py demo3.py 
    ['python', 'split()', '方法,', '测试#', '学习']
    ['python split() 方法, 测试', ' 学习']
    [root@kube str_method]# 

     Python join()方法:合并字符串

    join() 方法也是非常重要的字符串方法,它是 split() 方法的逆方法,用来将列表(或元组)中包含的多个字符串连接成一个字符串。

    使用 join() 方法合并字符串时,它会将列表(或元组)中多个字符串采用固定的分隔符连接在一起。例如,字符串“c.biancheng.net”就可以看做是通过分隔符“.”将 ['c','biancheng','net'] 列表合并为一个字符串的结果。

    join() 方法的语法格式如下:

    newstr = str.join(iterable)
    此方法中各参数的含义如下:
    newstr:表示合并后生成的新字符串;
    str:用于指定合并时的分隔符;
    iterable:做合并操作的源字符串数据,允许以列表、元组等形式提供。
    [root@kube str_method]# cat demo4.py 
    #coding:utf-8
    
    l1 = ['hello' ,'Python','学费280']
    
    print(''.join(l1))
    print('+'.join(l1))
    print('--+--'.join(l1))
    [root@kube str_method]# py demo4.py 
    helloPython学费280
    hello+Python+学费280
    hello--+--Python--+--学费280
    [root@kube str_method]# 

    python count() 方法:统计字符串出现的次数

    count 方法用于检索指定字符串在另一字符串中出现的次数,如果检索的字符串不存在,则返回 0,否则返回出现的次数。

    count 方法的语法格式如下:

    str.count(sub[,start[,end]])
    此方法中,各参数的具体含义如下:
    str:表示原字符串;
    sub:表示要检索的字符串;
    start:指定检索的起始位置,也就是从什么位置开始检测。如果不指定,默认从头开始检索;
    end:指定检索的终止位置,如果不指定,则表示一直检索到结尾。
    [root@kube str_method]# cat demo5.py 
    #coding:utf-8
    
    s = '你好, python, 技术。'
    print(s)
    print(s.count(''))
    print(s.count('技术',3))
    [root@kube str_method]# py demo5.py 
    你好, python, 技术。
    2
    1
    [root@kube str_method]# 

     python find() 方法: 检测字符串中是否包含某个子串

     find() 方法用于检索字符串中是否包含目标字符串,如果包含,则返回第一次出现该字符串的索引;反之,则返回 -1。

    find() 方法的语法格式如下:

    str.find(sub[,start[,end]])
    
    此格式中各参数的含义如下:
    str:表示原字符串;
    sub:表示要检索的目标字符串;
    start:表示开始检索的起始位置。如果不指定,则默认从头开始检索;
    end:表示结束检索的结束位置。如果不指定,则默认一直检索到结尾。
    [root@kube str_method]# cat demo6.py 
    #coding:utf-8
    
    s = '你好, python, 技术。'
    print(s)
    print(s.find(''))
    print(s.find('技术',3))
    print(s[12])
    [root@kube str_method]# py demo6.py 
    你好, python, 技术。
    2
    12
    技
    [root@kube str_method]# 

     Python index()方法:检测字符串中是否包含某子串

     同 find() 方法类似,index() 方法也可以用于检索是否包含指定的字符串,不同之处在于,当指定的字符串不存在时,index() 方法会抛出异常。

    index() 方法的语法格式如下:

    str.index(sub[,start[,end]])
    此格式中各参数的含义分别是:
    str:表示原字符串;
    sub:表示要检索的子字符串;
    start:表示检索开始的起始位置,如果不指定,默认从头开始检索;
    end:表示检索的结束位置,如果不指定,默认一直检索到结尾。
    [root@kube str_method]# cat demo6.py 
    #coding:utf-8
    
    s = '你好, python, 技术。'
    print(s)
    print(s.index(''))
    print(s.index('P'))
    
    [root@kube str_method]# py demo6.py 
    你好, python, 技术。
    2
    Traceback (most recent call last):
      File "demo6.py", line 6, in <module>
        print(s.index('P'))
    ValueError: substring not found
    [root@kube str_method]# 

    Python字符串对齐方法(ljust()、rjust()和center())详解 

    Python str 提供了 3 种可用来进行文本对齐的方法,分别是 ljust()、rjust() 和 center() 方法

    ljust() 方法的功能是向指定字符串的右侧填充指定字符,从而达到左对齐文本的目的。

    ljust() 方法的基本格式如下:

    S.ljust(width[, fillchar])
    
    其中各个参数的含义如下:
    S:表示要进行填充的字符串;
    width:表示包括 S 本身长度在内,字符串要占的总长度;
    fillchar:作为可选参数,用来指定填充字符串时所用的字符,默认情况使用空格。

    Python rjust()方法

    rjust() 和 ljust() 方法类似,唯一的不同在于,rjust() 方法是向字符串的左侧填充指定字符,从而达到右对齐文本的目的。

    rjust() 方法的基本格式如下:

    S.rjust(width[, fillchar])

    Python center()方法

    center() 字符串方法与 ljust() 和 rjust() 的用法类似,但它让文本居中,而不是左对齐或右对齐。

    center() 方法的基本格式如下:

    S.center(width[, fillchar])
    [root@kube str_method]# cat demo7.py 
    #coding:utf-8
    
    s1 = 'http://test.ljust.com.cn.gov'
    s2 = 'http://test.rjust.canca.aest.com.cn'
    print(len(s1))
    print(len(s2))
    
    print(s1.ljust(40))
    print(s2.ljust(40))
    
    #ljust 用法
    
    print(s1.rjust(40))
    print(s2.rjust(40))
    #rjust 用法
    
    print(s1.center(40))
    print(s2.center(40))
    #center 用法
    
    
    [root@kube str_method]# py demo7.py 
    28
    35
    http://test.ljust.com.cn.gov            
    http://test.rjust.canca.aest.com.cn     
                http://test.ljust.com.cn.gov
         http://test.rjust.canca.aest.com.cn
          http://test.ljust.com.cn.gov      
      http://test.rjust.canca.aest.com.cn   
    [root@kube str_method]# 

    Python startswith()和endswith()方法

    startswith()方法

    startswith() 方法用于检索字符串是否以指定字符串开头,如果是返回 True;反之返回 False。此方法的语法格式如下:

    str.startswith(sub[,start[,end]])
    
    此格式中各个参数的具体含义如下:
    str:表示原字符串;
    sub:要检索的子串;
    start:指定检索开始的起始位置索引,如果不指定,则默认从头开始检索;
    end:指定检索的结束位置索引,如果不指定,则默认一直检索在结束。

    endswith()方法

    endswith() 方法用于检索字符串是否以指定字符串结尾,如果是则返回 True;反之则返回 False。该方法的语法格式如下:

    str.endswith(sub[,start[,end]])
    
    此格式中各参数的含义如下:
    str:表示原字符串;
    sub:表示要检索的字符串;
    start:指定检索开始时的起始位置索引(字符串第一个字符对应的索引值为 0),如果不指定,默认从头开始检索。
    end:指定检索的结束位置索引,如果不指定,默认一直检索到结束。
    [root@kube str_method]# cat demo8.py 
    #coding:utf-8
    
    s1 = 'http://test.ljust.com.cn.gov'
    s2 = 'https://test.rjust.canca.aest.com.cn/'
    
    print(s1.startswith('http'))
    print(s2.startswith('https'))
    print(s2.startswith('ftp'))
    
    print('
    ----------------------------')
    
    print(s1.endswith('.gov'))
    print(s2.endswith('.cn/'))
    print(s2.endswith('.com/'))
    [root@kube str_method]# py demo8.py 
    True
    True
    False
    
    ----------------------------
    True
    True
    False
    [root@kube str_method]# 

     Python字符串大小写转换(3种)函数及用法

    Python 中,为了方便对字符串中的字母进行大小写转换,字符串变量提供了 3 种方法,分别是 title()、lower() 和 upper()。

    Python title()方法

    title() 方法用于将字符串中每个单词的首字母转为大写,其他字母全部转为小写,转换完成后,此方法会返回转换得到的字符串。如果字符串中没有需要被转换的字符,此方法会将字符串原封不动地返回。

    title() 方法的语法格式如下:

    str.title()

    其中,str 表示要进行转换的字符串。

    Python lower()方法

    lower() 方法用于将字符串中的所有大写字母转换为小写字母,转换完成后,该方法会返回新得到的字符串。如果字符串中原本就都是小写字母,则该方法会返回原字符串。

    lower() 方法的语法格式如下:

    str.lower()

    Python upper()方法

    upper() 的功能和 lower() 方法恰好相反,它用于将字符串中的所有小写字母转换为大写字母,和以上两种方法的返回方式相同,即如果转换成功,则返回新字符串;反之,则返回原字符串。

    upper() 方法的语法格式i

    str.upper()
    [root@kube str_method]# cat demo9.py 
    s = 'http://Python.COM.cn/'
    print(s.title())      #将单词首字母大写
    
    print(s.lower())      #所有字符串小写
     
    print(s.upper())      #所有字符串大写
    
    [root@kube str_method]# py demo9.py 
    Http://Python.Com.Cn/
    http://python.com.cn/
    HTTP://PYTHON.COM.CN/
    [root@kube str_method]# 

     Python去除字符串中空格(删除指定字符)的3种方法

    用户输入数据时,很有可能会无意中输入多余的空格,或者在一些场景中,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。

    这里的特殊字符,指的是制表符( )、回车符( )、换行符( )等。

    Python 中,字符串变量提供了 3 种方法来删除字符串中多余的空格和特殊字符,它们分别是:
    strip():删除字符串前后(左右两侧)的空格或特殊字符。
    lstrip():删除字符串前面(左边)的空格或特殊字符。
    rstrip():删除字符串后面(右边)的空格或特殊字符。
    Python strip()方法
    strip() 方法用于删除字符串左右两个的空格和特殊字符,该方法的语法格式为:
    str.strip([chars])
    
    Python lstrip()方法
    lstrip() 方法用于去掉字符串左侧的空格和特殊字符。该方法的语法格式如下:
    str.lstrip([chars])
    
    Python rstrip()方法
    rstrip() 方法用于删除字符串右侧的空格和特殊字符,其语法格式为:
    str.rstrip([chars])
    [root@kube str_method]# cat demo10.py 
    s = ' test. com
    '
    print(s)
    print(s.strip())
    print(s.lstrip())
    print(s.rstrip())
    [root@kube str_method]# py demo10.py 
     test. com
    
    test. com
    test. com
    
     test. com
    [root@kube str_method]# 

    Python format()格式化输出方法详解

    前面章节介绍了如何使用 % 操作符对各种类型的数据进行格式化输出,这是早期 Python 提供的方法。自 Python 2.6 版本开始,字符串类型(str)提供了 format() 方法对字符串进行格式化,本节就来学习此方法。

    format() 方法的语法格式如下:

    str.format(args)

    此方法中,str 用于指定字符串的显示样式;args 用于指定要进行格式转换的项,如果有多项,之间有逗号进行分割。

    学习 format() 方法的难点,在于搞清楚 str 显示样式的书写格式。在创建显示样式模板时,需要使用{}来指定占位符,其完整的语法格式为:

    { [index][ : [ [fill] align] [sign] [#] [width] [.precision] [type] ] }

     注意,格式中用 [] 括起来的参数都是可选参数,即可以使用,也可以不使用。各个参数的含义如下:

    • index:指定:后边设置的格式要作用到 args 中第几个数据,数据的索引值从 0 开始。如果省略此选项,则会根据 args 中数据的先后顺序自动分配。
    • fill:指定空白处填充的字符。注意,当填充字符为逗号(,)且作用于整数或浮点数时,该整数(或浮点数)会以逗号分隔的形式输出,例如(1000000会输出 1,000,000)。
    • align:指定数据的对齐方式,具体的对齐方式如表 1 所示。
      • 表 1 align 参数及含义
        align含义
        < 数据左对齐。
        > 数据右对齐。
        = 数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数字类型有效。
        ^ 数据居中,此选项需和 width 参数一起使用。
      • sign:指定有无符号数,此参数的值以及对应的含义如表 2 所示。
        表 2 sign 参数以含义
        sign参数含义
        + 正数前加正号,负数前加负号。
        - 正数前不加正号,负数前加负号。
        空格 正数前加空格,负数前加负号。
        # 对于二进制数、八进制数和十六进制数,使用此参数,各进制数前会分别显示 0b、0o、0x前缀;反之则不显示前缀。
      • width:指定输出数据时所占的宽度。
      • .precision:指定保留的小数位数。
      • type:指定输出数据的具体类型,如表 3 所示。
        表 3 type 占位符类型及含义
        type类型值含义
        s 对字符串类型格式化。
        d 十进制整数。
        c 将十进制整数自动转换成对应的 Unicode 字符。
        e 或者 E  转换成科学计数法后,再格式化输出。
        g 或 G 自动在 e 和 f(或 E 和 F)中切换。
        b 将十进制数自动转换成二进制表示,再格式化输出。
        o 将十进制数自动转换成八进制表示,再格式化输出。
        x 或者 X 将十进制数自动转换成十六进制表示,再格式化输出。
        f 或者 F 转换为浮点数(默认小数点后保留 6 位),再格式化输出。
        % 显示百分比(默认显示小数点后 6 位)。

     Python encode()和decode()方法:字符串编码转换

    我们知道,最早的字符串编码是 ASCII 编码,它仅仅对 10 个数字、26 个大小写英文字母以及一些特殊字符进行了编码。ASCII 码做多只能表示 256 个符号,每个字符只需要占用 1 个字节。

    随着信息技术的发展,各国的文字都需要进行编码,于是相继出现了 GBK、GB2312、UTF-8 编码等,其中 GBK 和 GB2312 是我国制定的中文编码标准,规定英文字符母占用 1 个字节,中文字符占用 2 个字节;而 UTF-8 是国际通过的编码格式,它包含了全世界所有国家需要用到的字符,其规定英文字符占用 1 个字节,中文字符占用 3 个字节。

    Python 3.x 默认采用 UTF-8 编码格式,有效地解决了中文乱码的问题。

    在 Python 中,有 2 种常用的字符串类型,分别为 str 和 bytes 类型,其中 str 用来表示 Unicode 字符,bytes 用来表示二进制数据。str 类型和 bytes 类型之间就需要使用 encode() 和 decode() 方法进行转换。

    Python encode()方法

    encode() 方法为字符串类型(str)提供的方法,用于将 str 类型转换成 bytes 类型,这个过程也称为“编码”。

    encode() 方法的语法格式如下:

    str.encode([encoding="utf-8"][,errors="strict"])

    注意,格式中用 [] 括起来的参数为可选参数,也就是说,在使用此方法时,可以使用 [] 中的参数,也可以不使用。

    该方法各个参数的含义如表 1 所示。

    表 1 encode()参数及含义
    参数含义
    str 表示要进行转换的字符串。
    encoding = "utf-8" 指定进行编码时采用的字符编码,该选项默认采用 utf-8 编码。例如,如果想使用简体中文,可以设置 gb2312。

    当方法中只使用这一个参数时,可以省略前边的“encoding=”,直接写编码格式,例如 str.encode("UTF-8")。
    errors = "strict" 指定错误处理方式,其可选择值可以是:
    • strict:遇到非法字符就抛出异常。
    • ignore:忽略非法字符。
    • replace:用“?”替换非法字符。
    • xmlcharrefreplace:使用 xml 的字符引用。
    该参数的默认值为 strict。

    注意,使用 encode() 方法对原字符串进行编码,不会直接修改原字符串,如果想修改原字符串,需要重新赋值。

    Python decode()方法
    和 encode() 方法正好相反,decode() 方法用于将 bytes 类型的二进制数据转换为 str 类型,这个过程也称为“解码”。

    decode() 方法的语法格式如下:

    bytes.decode([encoding="utf-8"][,errors="strict"])
    表 2 decode()参数及含义
    参数含义
    bytes 表示要进行转换的二进制数据。
    encoding="utf-8" 指定解码时采用的字符编码,默认采用 utf-8 格式。当方法中只使用这一个参数时,可以省略“encoding=”,直接写编码方式即可。

    注意,对 bytes 类型数据解码,要选择和当初编码时一样的格式。
    errors = "strict" 指定错误处理方式,其可选择值可以是:
    • strict:遇到非法字符就抛出异常。
    • ignore:忽略非法字符。
    • replace:用“?”替换非法字符。
    • xmlcharrefreplace:使用 xml 的字符引用。
    该参数的默认值为 strict。

     注意,如果编码时采用的不是默认的 UTF-8 编码,则解码时要选择和编码时一样的格式,否则会抛出异常,

    [root@kube str_method]# cat demo11.py 
    s = '今天是个好日子!'
    print(s.encode())
    byte = s.encode()
    stri = byte.decode()
    print(stri)
    
    [root@kube str_method]# py demo11.py 
    b'xe4xbbx8axe5xa4xa9xe6x98xafxe4xb8xaaxe5xa5xbdxe6x97xa5xe5xadx90!'
    今天是个好日子!
    [root@kube str_method]# 

    Python dir()和help()帮助函数

    Python 非常方便,它不需要用户查询文档,只需掌握如下两个帮助函数,即可查看 Python 中的所有函数(方法)以及它们的用法和功能:

    1. dir():列出指定类或模块包含的全部内容(包括函数、方法、类、变量等)。
    2. help():查看某个函数或方法的帮助文档。
    Python 3.7.4 (default, Sep 20 2019, 15:41:39) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> dir(str)
    ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
    
    >>> help(str.title)
    
    >>> 
  • 相关阅读:
    帆软查看注册用户的数据库信息
    [已解决]报错:sql server 返回结果出现中文乱码
    消除点击单元格时出现的黑框
    python tcp udp函数装饰器,无需亲自手写socket连接代码。
    介绍一个python代码自动运行在远程机器的三方包。
    python paramiko上传文件夹到linux
    filebeat自定义索引名,filebeat索引模板
    mydumper
    mysql误删ibd文件
    mysql update多字段时引发的一个问题
  • 原文地址:https://www.cnblogs.com/zy09/p/11609005.html
Copyright © 2011-2022 走看看