美文网首页Python全栈工程师
10.1-字符串替换查找排版格式化

10.1-字符串替换查找排版格式化

作者: BeautifulSoulpy | 来源:发表于2019-08-18 15:17 被阅读10次

    喜欢是乍见之欢,爱是久处不厌。而这世上所有的久处不厌,都是因为用心。早安!


    本章节关键:字符串操作远比我们想象的复杂的多

    1. 字符串

    Python 中字符串是由 Uniocde 编码的字符组成的不可变序列,它具备与其它序列共有的一些操作,例如判断元素是否存在、拼接序列、切片操作、求长度、求最值、求元素的索引位置及出现次数等等。

    2.字符串大小写
    python链式编程思想:"abc".upper().lower().split().append()
    append() ->None
    split() ->[]
    upper() ->str   # 返回s中所有字母字符转换为大写的副本
    swapcase() ->str   #返回一个s中大写字母字符转换为小写,小写字母转化为大写的副本:
    
    title()  #返回s的一个副本,其中每个单词的第一个字母转换为大写,其余字母为小写
    capitalize()    #返回一个s的副本,第一个字符转换为大写,所有其他字符转换为小写
    center()    #居中宽度,填充字符
    zfill()      #打印宽度,居右;左边用0填充;
    ljust()    #左对齐;
    rjust()    #右对齐;
    
    3. 字符串修改;
    3.1 replace(old,new[,count]) ->str

    原字符不变

    不可变类型字符串可以修改吗?
    不管这个数据可不可以修改,尽量的查询,读取,少修改;
    f='www.magedu.com'
    f.replace('w','p')
    f.replace('w','p',2)    #替换2次;
    
    3.2 strip 、lstrip 、rstrip(三个内建函数) *****

    函数原型
    S.strip([chars]) -> str 新字符串

    声明:s为字符串,rm为要删除的字符序列
    s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
    s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
    s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符

    注意:strip将在其他文本后删除括号内指定的每一个字符(不要求这些字符按顺序出现)

    注意:1. 当rm为空时,默认删除空白符(包括'\n', '\r',  '\t',  ' ')
    >>> a = '     123'
    >>> a.strip()
    '123'
    >>> a='\t\tabc'
    'abc'
    >>> a = 'sdff\r\n'
    >>> a.strip()
    'sdff'
    
    2.这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。
    >>> a = '123abc'
    >>> a.strip('21')
    '3abc'   结果是一样的
    >>> a.strip('12')
    '3abc'
    
    s = " I am very very very sorry "
    s.strip('Iy')
    -----------------------------------------
    ' I am very very very sorry '
    
    s.strip('Iy ')
    --------------------------------
    'am very very very sorr'
    
    4.字符串查找find / rfind / index / rindex /count

    找到返回索引; 没找到返回-1;
    find(sub[.start,end]) ->int # -1 不一定是效率高的方法;但是推荐使用;
    rfind(sub[, start[, end]]) ->int #-1 分左右方向查找,返回的索引不同;
    index(sub[, start[, end]]) ->indexerror
    rindex(sub[, start[, end]]) ->indexerror

    count(sub[.start,end]) ->int # 返回次数
    len(string) #取长度

    string6 = '我是一名Python用户,Python给我的工作带来了很多便捷。'
    print(string6.index('Python')) | 4
    print(string6.find('Python'))  |4
    
    index()与find()的比较:
    1.index返回没找到会报错indexerror , 异常值处理毕竟有值比较好用(-1);推荐用find方法;
    2.时间复杂度:index和count方法都是O(n);随着列表数据规模的增大,效率下降;
    
    5.字符串判断endswith startswith,

    等同于find;
    endswith(suffix[,satrt[,end]]) ->bool #)返回True,否则返回False:
    startswith(suffix[,satrt[,end]]) ->bool

    注意效率问题;不要遍历整个字符;
    a = 'www.magedu.com'
    a.find('www',0,3) == 0
    a.find('www',0,len('yyy')) == 0
    True
    
    6.格式化输出

    一文搞懂Python字符串格式化

    6.1 C风格格式化输出(不推荐使用)

    %s 格式化字符串
    %d 格式化整数
    %f 格式化小数
    %c 格式化ASCII字符
    %o 格式化八进制
    %x 格式化十六进制
    %e 用科学计数法格式化

    • 用作左对齐
    • 用在正数前面显示正号,用在负数前没啥用
      m.n m是显示的最小长度,当m大于格式化位数时才起作用显示m位,n是代表小数的位数。

    转义字符
    \n 换行 \a提示音 \b退格键 \t横向制表符
    自然字符串 r' ' ,即取消转义

    6.2 使用内置的 format() 方法***
    1、通过位置
    #通过位置
    
    print('输出:{0},{1}'.format('优惠券','http://1668s.com') )
    print('输出:{},{}'.format('博客','http://hi-laoz.com'))
    print('输出:{1},{0},{1}'.format('优惠券','http://1668s.com'))
    

    字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。

    2、通过关键字参数
    print('{name},{url}'.format(url='http://1668s.com',name='优惠券'))
    
    image
    3、通过下标
    p=['博客','http://hi-laoz.com']
    print('输出:{0[0]},{0[1]}'.format(p))
    
    image

    list和tuple可以通过“打散”成普通参数给函数,而dict可以打散成关键字参数给函数。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。

    4、格式限定符

    它有着丰富的的“格式限定符”(语法是{}中带:号),比如:

    填充与对齐 填充常跟对齐一起使用 ^、<、>分别是居中、左对齐、右对齐,后面带宽度
    :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
    比如

    print('{:>8}'.format('189'))
    print('{:0>8}'.format('189'))
    print( '{:a>8}'.format('189'))
    
    image
    5、精度与类型f

    精度常跟类型f一起使用

    print( '{:.2f}'.format(3.14159))
    
    image

    其中.2表示长度为2的精度,f表示float类型。

    6、其他类型

    主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。

    print('17的二进制:','{:b}'.format(17)) #二进制
    print('17的十进制:','{:d}'.format(17)) #十进制
    print('17的八进制:','{:o}'.format(17)) #八进制
    print('十的十六进制:','{:x}'.format(17))  #十六进制
    
    image

    用,号还能用来做金额的千位分隔符。

    print('{:,}'.format(1234567890))
    
    image

    相关文章

      网友评论

        本文标题:10.1-字符串替换查找排版格式化

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