添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • str.strip([chars])--去除字符串前后两边的指定字符
  • str.lstrip([chars])--去除字符串前边的指定字符
  • str.rstrip([chars])--去除字符串后边的指定字符
  • # 参数为None则默认去除空白字符(空格,换行,制表符)
    s = ' \t hello world \n'
    s.strip()  # 'hello world'
    s.lstrip() # 'hello world \n'
    s.rstrip() # ' \t hello world'
    # 指定字符串参数,表示要删除字符的集合
    s = '-----hello world====='
    s.strip('-=') # 'hello world'
    s.lstrip('-') # 'hello world====='
    s.rstrip('=') # '-----hello world'

    字符串替换

    strip() 只能去除字符串两侧的内容,对位于中间位置的任何文本不起作用。对任意位置的字符删除可以借助 replace() 函数实现。

  • str.replace(old, new[, max])--把旧字符串替换成新字符串,默认全部替换;若指定第三个参数,则替换次数不超过max
  • str = "hello world";
    new_str = str.replace("l", "", 2) # 'heo world'

    对于字符串模板的替换,可以在字符串中使用 {var} 标记需要替换的变量名,然后使用 format() 方法替换变量内容。

    # 顺序变量
    '{2}, {1}, {0}'.format(*'abc')
    # 'c, b, a'
    # 命名变量
    str = '{name} has {n} messages.'
    str.format(name='Guido', n=37)
    # 'Guido has 37 messages.'

    字符串开头/结尾内容判断

    字符串的 startswith() endswith() 函数分别可用于对字符串起始/结束文本内容的判断。需要注意的是, 当传入元组类型参数时,表示匹配其中任意元素

    s = ["hello","python","world"]
    res = [s0 for s0 in s if s0.startswith(("h","wo"))]
    # res=['hello', 'world']

    字符串拼接/拆分

    split() join() 分别起到拆分和拼接字符串的作用:

    # split拆分字符串为列表
    s = 'hello python world'
    L = s.split(" ")
    # join拼接列表元素为字符串
    res = "-".join(L) # 'hello-python-world'

    如果需要 按行( '\r', '\r\n', \n' )分隔字符串,则可使用 splitlines() :

    # string.splitlines([keepends])按照行拆分字符串
    # 参数keepends默认为False,不包含换行符;如果为True,则保留换行符
    str = 'hello\n\npython\rworld\r\n'
    res1 = str.splitlines()
    # ['hello', '', 'python', 'world']
    res2 = str.splitlines(True)
    # ['hello\n', '\n', 'python\r', 'world\r\n']

    string 对象的 split() 方法只适应于非常简单的字符串分割情形, 无法处理多个分隔符或者是分隔符周围不确定的空格。使用 re.split() 方法则可以更加灵活地切割字符串:

    import re
    str = 'asdf fjdk; afed, fjek,asdf, foo'
    re.split(r'[;,\s]\s*', line)
    # ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

    字符串对齐

  • str.ljust(width,[fillchar])--输出width个字符,str左对齐,不足部分用fillchar(默认为空格)填充
  • str.rjust(width,[fillchar])--右对齐
  • str.center(width, [fillchar])--中间对齐
  • str.zfill(width)--类似str.rjust,不足部分填充0
  • s = "hello world"
    print(s.ljust(20, '*'))
    print(s.center(20, '*'))
    print(s.rjust(20, '*'))
    # hello world*********
    # ****hello world*****
    # *********hello world
    s = "123"
    print(s.zfill(6))
    # 000123

    以上方法仅针对字符串的对齐操作,更为通用的方法是函数 format() ,它可以用来格式化任意对象。 使用 < > ^ 后紧跟一个指定的宽度,分别用来表示左对齐、右对齐和中间对齐。若要指定一个非空格的填充字符,将其写到对齐字符之前即可:

    # 对齐字符串
    x = 'Hello World'
    format(x, '<20') # 'Hello World         '
    format(x, '=>20s') # '=========Hello World'
    format(x, '*^20s') # '****Hello World*****'
    # 对齐浮点数
    x = 1.2345
    format(x, '>10') # '    1.2345'
    

    当格式化多个值时,这些格式代码也可以被用在format()方法中:

    '{:>10s} {:>10s}'.format('Hello', 'World')
    # '     Hello      World'

    命名格式化字符串

    通常情况下,Python使用tuple传递字符串模板预留位置的值。实际上,可以依次命名预留位置,然后使用dict传入变量:

    msg = '''%(student.name)s is %(student.age)d years old.'''
    item = {"student.name": "XiaoMing", "student.age": 16}
    print(msg % item)
    # XiaoMing is 16 years old.

    完整使用参考:

    %[(name)][flags][width].[precision]typecode
  • (name):命名
  • flags:右对齐(+),左对齐(-),正数左侧填充一个空格使之与负数对齐(),使用0填充(0
  • width:显示宽度
  • precision:小数点后精度
  • typecode:格式类型码,例如字符串(%s%r),单个字符(%c),二、八、十、十六进制整数(%b, %o, %d, %x),浮点是(%f
  • 其中width, precision为两个整数,可以利用*来动态代入:

    s = "%*.*f" %(5,4,1.234)
    print(s)
    # 1.2340