美文网首页Python
Python—字符串(二)

Python—字符串(二)

作者: 八戒无戒 | 来源:发表于2019-08-17 22:57 被阅读0次

    上篇讲了python字符串的一些常用方法,现在再来看看字符串的一些不常用的方法吧(个人觉得比较鸡肋的方法)。

    • center(width,fillchar):字符串长度变为width的值,并以center为中心,两端以fillchar填充(右端优先),若fillchar小于字符串自身长度,则返回原字符串

    • ljust(width,fillchar):字符串长度变为width的值,并左对齐,右边空缺位置以fillchar填充,若fillchar小于字符串自身r长度,则返回原字符串

    • rjust(width,fillchar):字符串长度变为width的值,并右对齐,左边空缺位置以fillchar填充,若fillchar小于字符串自身长度,则返回原字符串

    >>> a="hello world"
    >>> a.center(20, '*')
    '****hello world*****'
    >>> a.center(14, "*")
    '*hello world**'
    >>> a.rjust(20, '*')
    '*********hello world'
    >>> a.ljust(20, '*')
    'hello world*********'
    >>> 
    
    • expandtabs(tabsize) :将原字符串中所有'\t'制表符转换成一个或多个空格并返回一个新的字符串,空格的值取决于当前列位置和给定的制表符宽度(tabsize参数值,默认为8)。每 tabsize 个字符设为一个制表位(默认值 8 时设定的制表位在字符串 0, 8, 16 ...依次类推),根据制表位将原字符串分为分为列。如下
    >>> a='hello\tworld\nbe\tauti\rful'
    >>> a[0:8]
    'hello\two'              # 第一列
    >>> a[8:16]
    'rld\nbe\ta'             # 第二列
    >>> a[16:]
    'uti\rful'                # 第三列
    >>> a.expandtabs()
    'hello   world\nbe      auti\rful'
    >>> '01\t012\t01\n\t23\t01234'.expandtabs(4)
    '01  012 01\n    23  01234'
    

    然后逐一检查每列中的每个字符,如果字符为'\t',则去除原来的'\t',插入空格,直到该列结束。如果字符为换行符 (\n) 或回车符 (\r),它将会被复制。此列直接结束,继续检查下一列。
    结果第一列:索引5时候出现'\t'制表符,则返回的第一列为'hello' + ' '*3,共八个字符。
    结果第二列:'world\n'(遇到'\n'该列直接结束)
    结果第三列:'be'后面为'\t',则返回的第三列为'be'+' '*6,共八个字符
    结果第四列:'auti\r'(遇到'\r'该列直接结束)
    结果第五列:'ful'
    将以上全部拼在一起即返回的结果,result='hello' + ' '*3+'world\n'+'be'+' '*6+'auti\r'+'ful',该方法真的是有点鸡肋,不过下面还有更鸡肋的。

    • maketrans(x[, y[, z]]): 此静态方法返回一个可供 [str.translate()]使用的转换对照表,即一个字典
      如果只有一个参数,则它必须是一个将 Unicode 码位序号(整数)或字符(长度为 1 的字符串)映射到 Unicode 码位序号、(任意长度的)字符串或 None 的字典。 字符键将会被转换为码位序号。
      如果有两个参数,则它们必须是两个长度相等的字符串,并且在结果字典中,x 中每个字符将被映射到 y 中相同位置的字符。 如果有第三个参数,它必须是一个字符串,其中的字符将在结果中被映射到 None。
    • translate(table): 返回原字符串的副本,其中每个字符按给定的转换表进行映射。参数通常为一字典。当映射值为None,将字符从结果字符串中删除
    # 只有一个参数时:
    >>> a="hello world"
    >>> b=a.maketrans({"h":"a","e":"b","l":"c","o":"d","w":"e"})
    >>> b
    {104: 97, 119: 101, 108: 99, 101: 98, 111: 100}
    >>> {chr(k):chr(v) for k,v in b.items()}
    {'e': 'b', 'o': 'd', 'l': 'c', 'h': 'a', 'w': 'e'}
    
    # 有两个参数时:
    >>> a="hello world"
    >>> b=a.maketrans('helow','abcde')
    >>> b
    {104: 97, 119: 101, 108: 99, 101: 98, 111: 100}
    >>> {chr(k):chr(v) for k,v in b.items()}
    {'e': 'b', 'o': 'd', 'l': 'c', 'h': 'a', 'w': 'e'}
    
    # 有三个参数时:
    >>> a="hello world"
    >>> b=a.maketrans('helow','abcde','@#')
    >>> b
    {64: None, 35: None, 101: 98, 119: 101, 104: 97, 108: 99, 111: 100}
    >>> {chr(k):chr(v) for k,v in b.items() if v}
    {'e': 'b', 'o': 'd', 'l': 'c', 'h': 'a', 'w': 'e'}
    >>> '@hello world#'.translate(b)
    'abccd edrcd'
    # "@"和"#"被映射成None,从结果字符串中删除,h映射为a,e映射为b,l映射为c,o映射为d,w映射为e,
    # r和d由于映射表中未映射,p还是本身值
    
    • partition(sep): 返p回一个三个元素的元祖,第一个元素为seq字符前面的字符串,第二个元素为seq本身,第三个元素为seq后面的字符串,从最左边的第一个seq切割,seq不在字符串中时返回一个包含字符串本身和两个空字符串的元祖

    • partition(sep): 返回一个三个元素的元祖,第一个元素为seq字符前面的字符串,第二个元素为seq本身,第三个元素为seq后面的字符串,从最右边的第一个seq切割,seq不在字符串中时返回一个包含字符串本身和两个空字符串的元祖

    >>> a="hello world"
    >>> a.partition('o')
    ('hell', 'o', ' world')
    >>> a.rpartition('o')
    ('hello w', 'o', 'rld')
    >>> a.partition('z')
    ('hello world', '', '')
    
    • splitlines([keepends]): 返回一个列表,列表元素为被'\n','\t'分割的子字符。keepends默认为False(即返回的列表元素不包含\n,\t),为True时将保留原来的\n或\t。
    >>> a="hel\nlo worl\t\rd"
    >>> a.splitlines()
    ['hel', 'lo worl\t', 'd']
    >>> a.splitlines(True)
    ['hel\n', 'lo worl\t\r', 'd']
    
    • swapcase(): 原字符串中小写字母变大写,大写字母变小写,特殊符号和数字不变,返回一个新字符串。
    >>> a="hello WORLD @1"
    >>> a.swapcase()
    'HELLO world @1'
    
    • zfill(width): 原字符串长度变为width,并右对齐,不足位补'0',返回一个新字符串。若width小于原字符串长度,则返回原字符串
    >>> a="hello world"
    >>> a.zfill(20)
    '000000000hello world'
    

    终终终于完了。。。。。。

    相关文章

      网友评论

        本文标题:Python—字符串(二)

        本文链接:https://www.haomeiwen.com/subject/pdqksctx.html