python3基础02数值和字符串(二)

226 阅读5分钟

上接“python3基础01数值和字符串(一)”;
本篇系统梳理python3字符串方法,字符串格式化输出。
首发于本人公众号:pythonic生物人

更好的阅读体验请戳:

python3基础02数值和字符串(二)

目录

  • 字符串处理方法

find方法
join方法
split方法
lower方法
upper方法
replace方法
strip,lstrip和rstrip方法
translate方法
startswith方法
endswith方法
is开头的诸多方法

  • 字符串格式化输出:format方法

调用参数
参数格式转换
python指定字符宽度,精度
指定字符千分位分隔符
对齐
指定填充字符
等号(=),指定将填充字符放在符号和数字之间


字符串处理方法

字符串处理方法很多(如下),本文介绍常用的几种方法,详细可见链接:docs.python.org/zh-cn/3.7/l…

    In [23]: print(dir(str))#dir列出字符串所用方法

'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'

  • find方法

语法,str.find(sub_str,a,b)

字符串str中查找子字符串sub_str所在位置时使用,a,b分别制定从str中开始搜索的位置,默认从第一个字符开始,a,b均可忽略;如果找到sub_str,就返回sub_str的第一个字符的索引,没找到返回-1。可用来判断str中是否包sub_str以及位置。

    In [32]: print("xiyangyang lanyangyang".find("huitanglang"))
     -1
    In [33]: print("xiyangyang lanyangyang".find("yang"))
    2
  • join方法

语法:sep.join(str),以sep为分隔符拼接字符串str。

In [36]: print("+".join("xiyangyang"))
x+i+y+a+n+g+y+a+n+g
  • split方法

语法:str.split(sep),以sep为分隔符,拆分字符串str为一个list。

In [37]: print("x+i+y+a+n+g+y+a+n+g".split("+"))
 ['x', 'i', 'y', 'a', 'n', 'g', 'y', 'a', 'n', 'g']
  • lower方法

语法:str.lower(),将字符串str转化为小写版本。

    In [39]: print("Hello! Hi!".lower())
    hello! hi!
  • upper方法

语法:str.upper(),将字符串str转化为大写版本。

    In [41]: print("Hello! Hi!".upper())
    HELLO! HI!
  • replace方法

语法:str.replace("sub_str1", "sub_str2", max)。将字符串str中的子字符串sub_str1替换为sub_str2,max为允许替换的最大次数,可忽略,默认替换所有。

In [48]: print("xiyangyang lanyangyang".replace("an","XX",2))
xiyXXgyXXg lanyangyang
  • strip,lstrip和rstrip方法

语法:三个方法类似,str.strip(sub_str)。strip方法去掉str开头和结尾的子字符串sub_str,sub_str可忽略,默认为空格。

    In [49]: print(" Hello ".strip())
    Hello
    In [50]: print(" Hello ".lstrip())
    Hello
    In [51]: print(" Hello ".rstrip())
    Hello
    In [52: print(" Hello ".rstrip("o "))
    Hell
  • translate方法

语法:str.translate(table),该方法同时替换str中多个字符,replace一次只能替换一个。

    
    In [56]: old = "axy"
        ...: new = "123"
        ...: #调用字符串str的maketrans方法制作转换表
        ...: table = str.maketrans(old, new)
        ...:
        ...: str1 = "xiyangyang lanyangyang"
        ...: print (str1.translate(table))
    2i31ng31ng l1n31ng31ng
  • startswith方法

语法:str.startswith(sub_str, a, b)。判断str是否以sub_str开头,是则返回True,否则返回False,a,b指定检索开始和结束( 默认是字符串的长度,表示结束搜索的位置)为止,默认从第一个字符开始。

    In [64]: print("Hello".startswith("H"))
    True
  • endswith方法

使用类似startswith,判断str是否以sub_str结尾。

  • is开头的诸多方法

'isalnum', 'isalpha', 'isascii', 'isdecimal',
'isdigit', 'isidentifier', 'islower', 'isnumeric',
'isprintable', 'isspace', 'istitle', 'isupper'

分别为判断字符时否是字母或数字、字母、ASCII等,详细参考docs.python.org/zh-cn/3.7/l…,结果返回True或者False。


字符串格式化输出:format方法

  • 调用参数

按顺序将字段和参数配对输出

    #按顺序将字段和参数配对输出
    In [79]: "{} {} {} {}".format(1, 2, 4, 3)
    Out[79]: '1 2 4 3'
    
    #给参数指定名称,通过参数名称调用输出
    In [80]: "{a} {a} {b} {b}".format(a=1, b=2)
    Out[80]: '1 1 2 2'
    
    #以上两种方法混用
    In [81]: "{} {a} {} {b}".format(0, 3, a=1, b=2)
    Out[81]: '0 1 3 2'
    
    #未命名参数通过索引调用输出
    In [82]: "{1} {a} {0} {b}".format(0, 3, a=1, b=2)
    Out[82]: '3 1 0 2'
  • 参数格式转换

指定要转换的值是哪种类型,如下例中的f b。

    
    In [85]: "The number is {:f}".format(42)#f将小数表示为定点数
    Out[85]: 'The number is 42.000000'
    
    In [86]: "The number is {:b}".format(42)#b将整数表示为二进制数
    Out[86]: 'The number is 101010'
  • 常用转化类型

    b             将整数表示为二进制数
    c             将整数解读为Unicode码点
    d             将整数视为十进制数进行处理,这是整数默认使用的说明符
    e             使用科学表示法来表示小数(用e来表示指数)
    E             与e相同,但使用E来表示指数
    f             将小数表示为定点数
    F            与f相同,但对于特殊值(nan和inf),使用大写表示
    g            自动在定点表示法和科学表示法之间做出选择。这是默认用于小数的说明符,但在默认情况下至少有1位小数
    G            与g相同,但使用大写来表示指数和特殊值
    n            与g相同,但插入随区域而异的数字分隔符
    o            将整数表示为八进制数
    s            保持字符串的格式不变,这是默认用于字符串的说明符
    x            将整数表示为十六进制数并使用小写字母
    X            与x相同,但使用大写字母
    %            将数表示为百分比值(乘以100,按说明符f设置格式,再在后面加上%)
    
  • python指定字符宽度,精度

   
   In [96]: "Pi is {pi:10.2f}".format(pi=math.pi)#指定字符快读为10,精度为2个小数位 
   Out[96]: 'Pi is       3.14'
  • 指定字符千分位分隔符
    In [101]: 'Oh gold banknote is {:,} yuan'.format(100000000000)
    Out[101]: 'Oh gold banknote is 100,000,000,000 yuan'
  • 对齐

分别使用<、>和^指定左对齐,右对齐和居中。

In [107]: print('{0:<10.2f}n{0:^10.2f}n{0:>10.2f}'.format(math.pi))
  • 指定填充字符

默认为空格

    In [113]: print('{0:
    In [113]: print('{0:$<10.2f}n{0:@^10.2f}n{0:&>10.2f}'.format(math.pi))
    3.14???
    @@@3.14@@@
    &&&&&&3.14
lt;10.2f}n{0:@^10.2f}n{0:&>10.2f}'
.format(math.pi)) 3.14?$ @@@3.14@@@ &&&&&&3.14
  • 等号(=),指定将填充字符放在符号和数字之间

此处=类似于<、>和^

    In [127]: print('{0:
    In [127]: print('{0:$>10.2f}n{1:$=10.2f}'.format(math.pi, -math.pi))
    ??$$3.14
    -??$3.14
gt;10.2f}n{1:$=10.2f}'
.format(math.pi, -math.pi)) ?$$3.14 -?$3.14

参考资料

[https://www.cnblogs.com/f-ck-need-u/p/9127699.html#21-isalphaisdecimalisdigitisnumericisalnum][6]
[https://docs.python.org/zh-cn/3.7/library/stdtypes.html#str.join][7]

关注"pythonic生物人"食用,它不香吗?
关注"pythonic生物人"食用,它不香吗?