Python入门之字符串

字符串

字符串创建:

>>> name = "chengd"
>>> name = 'chengd'
>>> name = """
... chengd is good
... "Good" is 'hao'
... """
>>> 
>>> name
'\nchengd is good\n"Good" is \'hao\'\n'
>>> 

注:创建字符串时必须用双引号、单引号、单双三引号引起;其中三引号中可以包含单双引号、换行

字符串常用方法:

  • 字符包含判断:str1.__contains__(str2)等同str2 in str1;
  • >>> str1 = 'name'
    >>> str2 = 'm' 
    >>> str2 in str1 
    True
    >>> str1.__contains__(str2)
    True
  • 字符串相等判断:str.__eq__(str1)与 str == str1
  • >>> str1 = "name" 
    >>> str2 = "names"
    >>> str1.__eq__(str2)
    False
    >>> str1 == str2
    False
  • 字符串格式化:str.format()

  1. 使用{}占位符或使用{0},{1}形式占位符
    >>> "{} {} welcome to you!".format("python","world")
    'python world welcome to you!'
    >>> "{0} {1} welcome to you!".format("python","world")
    'python world welcome to you!'
    >>> "{1} {0} welcome to you!".format("world","python")
    'python world welcome to you!'
  2. 使用关键字参数
    >>> "NAME:{name} AGE:{age}".format(name = "chengd",age = "99")
    'NAME:chengd AGE:99'
  3. 使用tuple,list,dict的下标
    >>> list1 = ["chengd",99]
    >>> list1
    ['chengd', 99]
    >>> "Name:{0[0]} Age:{0[1]}".format(list1)
    'Name:chengd Age:99'
  4. 填充与对齐:^、<、>分别是居中、左对齐、右对齐,后面带宽度;:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充;

    >>> name = "chengd"
    >>> name
    'chengd'
    >>> ":>20".format(name)
    ':>20'
    >>> "{:>20}".format(name)
    '              chengd'
    >>> "{:*>20}".format(name)
    '**************chengd'
    >>> "{:<20}".format(name)
    'chengd              '
    >>> "{:*<20}".format(name)
    'chengd**************'
    >>> "{:^20}".format(name)
    '       chengd       '
    >>> "{:*^20}".format(name)
    '*******chengd*******'
    View Code

     注:格式化宽度包含原字符串宽度和填充字符宽度

  • string.capitalize():首字母大写
    >>> name = "chengd"
    >>> name
    'chengd'
    >>> name.capitalize()
    'Chengd'
  • string.casefold():大写字母变小写
    >>> name = "CHENGDONG"
    >>> name
    'CHENGDONG'
    >>> name.casefold()
    'chengdong'
  • string.center(width[,fillchar]):返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格
    #width:表示字符总宽度
    #fillchar:填充字符
    >>> name = "python"
    >>> name
    'python'
    >>> name.center(30,"*")
    '************python************'
    >>> 
  •  string.count('str'[,start,end]):统计字符串中指定字符str出现次数

    #start表示字符串起始下标,end表示结束下标
    >>> lang = "python" >>> lang 'python' >>> lang.count("p") 1 >>> lang.count("p",2,3) 0
  • string.encode(encoding='UTF-8',errors='strict'):以 encoding 指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案 
    >>> string = "python is good lang... WOW"
    >>> string
    'python is good lang... WOW'
    >>> string.encode("gbk")
    b'python is good lang... WOW'
  • string.endswith('str'[,start,end]):是否以字符str结尾;可以指定起始下标(start)和结束下标(end) 
    >>> string
    'python is good lang... WOW'
    >>> string.endswith("WOW")
    True
    >>> string.endswith("WOW,0,10")
    False
    >>> 
  • string.startswith('str'[,start,end]): 是否以字符str开头;可以指定起始下标(start)和结束下标(end)

    >>> string
    'python is good lang... WOW'
    >>> string.startswith("python")
    True
    >>> string.startswith("python",3)
    False
  • string.expandtabs(num):把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8;该方法返回字符串中的 tab 符号('\t')转为空格后生成的新字符串。
    >>> stra = 'abc\tabc'
    >>> def printa():
        print(stra)
        print(stra.expandtabs(1))
        print(stra.expandtabs(2))
        print(stra.expandtabs(3))
        print(stra.expandtabs(4))
        print(stra.expandtabs(5))
        print(stra.expandtabs(6))
        print(stra.expandtabs(7))
        print(stra.expandtabs(8))
        print(stra.expandtabs())
    >>> printa()
    abc    abc
    abc abc
    abc abc
    abc   abc
    abc abc
    abc  abc
    abc   abc
    abc    abc
    abc     abc
    abc     abc
    >>> 
    #expandtabs的参数tabsize制表位的位置
    #当tabsize为1时,每个字符的位置都是制表位,两个字符串之间留一个字符的长度
    #当tabsize为2时,1 3 5...是制表位,字符串长度为3时,下一个字符串从第5个字符开始
    #当tabsize为3时,1 4 7...是制表位,字符串长度为3时,下一个字符串从第7个字符开始
    #...
    #当tabsize为8时,1 9 17...是制表位,字符串长度为3时,下一个字符串从第9个字符开始
    #依次类推可得上述结果
    参考:http://bbs.csdn.net/topics/390501569
  • string.find('str'[,start,end]):查找指定字符串str的字符下标,可指定起始结尾;存在则返回str的下标,不存在返回-1
    >>> string = "python is good"
    >>> string
    'python is good'
    >>> print(string.find("is"))
    7    
    #返回查找字符首个字符的下标
    >>> print(string.find("iss"))
    -1
    >>> 
  •  string.index('str'[,start,end]):查找指定str字符下标索引;可指定起始结尾;不存在抛出异常

    >>> string
    'python is good'
    >>> string.index("is")
    7
    >>> string.index("iss")
    Traceback (most recent call last):
      File "<pyshell#126>", line 1, in <module>
        string.index("iss")
    ValueError: substring not found
    >>> string.index("is",0,10)
    7
    #返回查找字符首个字符的下标
    >>>
  • string.isalnum():判断字符串是否是字母和数字组成
    >>> string = "chengd"
    >>> string
    'chengd'
    >>> string.isalnum()
    True
    >>> string = "chengd is  good"
    >>> string.isalnum()
    False
    #字符串只能包含字母和数字
    >>> string = "chengd99"
    >>> string.isalnum()
    True
    >>>  
  • string.isalpha():判断字符串是否是纯字母组成
    >>> string
    'chengd99'
    >>> string.isalpha()
    False
    >>> string = "chengd"
    >>> string.isalpha()
    True
    >>>  
  • string.isdigit():判断字符串是否是纯数字组成
    >>> string
    'chengd'
    >>> string.isdigit()
    False
    >>> string = "chengd99"
    >>> string.isdigit()
    False
    >>> string = "123456789"
    >>> string.isdigit()
    True
    >>> 
  • string.islower():判断字符串中的字母否是小写
    >>> string
    '123456789'
    #不能是纯数字
    >>> string.islower()
    False
    >>> string = "chengd99"
    >>> string.islower()
    True
    #可以是字母和数字组合
    >>> string = "Chengd99"
    >>> string.islower()
    False
    >>> string = "99chengd"
    >>> string.islower()
    True
    >>> string = "chengd"
    >>> string.islower()
    True
    >>> 
  • string.title(): 字符串转换为标题格式,首字母大写其余小写

    >>> string = "python"
    >>> string
    'python'
    >>> string.title()
    'Python'
    >>> 
  •  string.istitle():判断字符串是否是title格式(见string.title())

    >>> string = "python"
    >>> string
    'python'
    >>> string.title()
    'Python'
    >>> string
    'python'
    >>> string.istitle()
    False
    >>> string.title().istitle()
    True
    >>>  
  • string.isdecimal():如果 string 只包含十进制数字则返回 True 否则返回 False
    >>> string = "chengd99"
    >>> string1 = "999"
    >>> string.isdecimal()
    False
    >>> string1.isdecimal()
    True
    >>> 
  • string.isspace(): 如果 string 中只包含空格,则返回 True,否则返回 False
    >>> string1 = "  "
    >>> string2 = "chengd is good"
    >>> string1.isspace()
    True
    >>> string2.isspace()
    False
    >>> 
  • string.isupper():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
    >>> string1 = "Chengd IS Good"
    >>> string2 = "CHENGD IS GOOD BOY"
    >>> string3 = "chengd is like python"
    >>> string1.isupper()
    False
    >>> string2.isupper()
    True
    >>> string3.isupper()
    False
    >>> 
  • string.join(seq):以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

    >>> name = "Python"
    >>> name
    'Python'
    >>> "-".join(name)
    'P-y-t-h-o-n'
  •  string.ljust(width[,"str"]):返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串;可以指定分隔符str

    >>> name
    'Python'
    >>> name.ljust(10)
    'Python    '
    >>> name.ljust(10,"*")
    'Python****'
  •  string.rjust(width[,"str"]):返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串;可以指定分隔符str

    >>> name
    'Python'
    >>> name.rjust(10)
    '    Python'
    >>> name.rjust(10,"*")
    '****Python'
  • string.lstrip(["str"]):截掉 string 左边的空格(换行,空格);可以截掉指定字符str,默认为空格
    >>> name = "   python   "
    >>> name
    '   python   '
    >>> name.lstrip()
    'python   '
    >>> names = "***python***"
    >>> names.lstrip("*")
    'python***'
  • string.rstrip(["str"]):截掉 string右边的空格(换行,空格);可以截掉指定字符str,默认为空格
    >>> name
    '   python   '
    >>> names
    '***python***'
    >>> name.rstrip()
    '   python'
    >>> names.rstrip("*")
    '***python'
  • string.strip(["str"]):截掉 string首尾空白(空格,换行);可以截掉指定字符str,默认为空格;等同于同时执行string.rstrip(["str"])和string.lstrip(["str"])
    >>> name
    '   python   '
    >>> names
    '***python***'
    >>> name.strip()
    'python'
    >>> names.strip("*")
    'python'
  • string.partition(str):指定字符串包含的分隔符str,结果返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串
    >>> indexs = "https://www.pyhton.org"
    >>> indexs
    'https://www.pyhton.org'
    >>> indexs.partition("://")
    ('https', '://', 'www.pyhton.org')
  • string.lower():将字符串小写
    >>> name = "ChengD99"
    >>> name
    'ChengD99'
    >>> name.lower()
    'chengd99'
  • string.upper():将字符串大写
    >>> name
    'ChengD99'
    >>> name.upper()
    'CHENGD99'
  • string.maketrans(intab, outtab]):Python maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式, 第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标 
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    intab = "aeiou"
    outtab = "12345"
    trantab = str.maketrans(intab, outtab)
    
    str = "aeiou is good";
    print(str.translate(trantab))
    #输出结果
    12345 3s g44d

   注:两个字符串的长度必须相同,为一一对应的关系。

  • string.replace(str1, str2,  num=string.count(str1)):把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次
    >>> name
    'python is is good'
    >>> name.count("is")
    2
    >>> name.replace("is","Is")
    'python Is Is good'
    >>> name.replace("is","Is",1)
    'python Is is good'
    >>> name.replace("is","Is",3)
    'python Is Is good'
    #注:替换字符数量超出name.count("is");不会报错并且全部替换
  • string.split(str, num=string.count(str)):以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
    >>> name
    'python is is good'
    >>> name.split()
    ['python', 'is', 'is', 'good']
    >>> name.split(" ",1)
    ['python', 'is is good']
    >>> names = "chengd999"
    >>> names
    'chengd999'
    >>> names.split()
    ['chengd999']
    >>> names.split("eng")
    ['ch', 'd999']

    注:默认分隔符为空格

  • string.splitlines([keepends]):按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False(默认为False),不包含换行符,如果为 True,则保留换行符
    >>> string = "a\rb\nc\r\nd\n\r"
    >>> string
    'a\rb\nc\r\nd\n\r'
    >>> string.splitlines()
    ['a', 'b', 'c', 'd', '']
    >>> string.splitlines(True)
    ['a\r', 'b\n', 'c\r\n', 'd\n', '\r']
  • string.swapcase():将字符串中大小写互相转换
    >>> name = "Python"
    >>> name.swapcase()
    'pYTHON'

     

posted @ 2017-05-07 18:22  chengd  阅读(364)  评论(0)    收藏  举报