python 字符串

字符串
常用内置函数:
str.join(‘aaa’)
str.replace(‘old’,’new’)
str.find
str.split
str.startwith()str.endswith()
str.swapcase()  大写转小写 同时 小写转大写
str.isdigit()  判断是否是数字
str.capitalize() 首字母大写
翻译表
import  string
a = '222333111'
ii =  string.maketrans('123','abc')  #翻译表
print a.translate(ii)

a = '222333111'
ii =  string.maketrans('','')  #翻译表
print a.translate(ii,'123')  #去除所有的1 2 3 逐字删除


偏移
            python的字串列表有2种取值顺序:
            从左到右索引默认0开始的,最大范围是字符串长度少1
            从右到左索引默认-1开始的,最大范围是字符串开头

            s = 'ilovepython'
            s[1:5]的结果是love。

            str = 'Hello World!'
            print str # 输出完整字符串
            print str[0] # 输出字符串中的第一个字符
print str[-1] # 输出字符串中的最后一个字符
            print str[2:5] # 输出字符串中第三个至第五个之间的字符串
            print str[2:] # 输出从第三个字符开始的字符串
            print str * 2 # 输出字符串两次
            print str + "TEST" # 输出连接的字符串

a=“你好”  len(a) ->6
a=u“你好” len(a) ->2    还有一种前面添加r”\n“
g = a.decode(”utf-8) len(g) ->2
     拼接: +
     获取值: var1[0] var1[1:5]
     包含: in 如果字符串中包含给定的字符返回
重复输出字符串: a * 2 'HelloHello'
占位符 % format
%方式
print "name is %s weight is %d kg!" % ('Zara', 21) ==》name is Zara weight    is 21 kg!
format方式:
print ”你好 {} {} 安徽“.format(”秦“,”欢迎来到“) 推荐
print ”你好 {1} {0} 安徽“.format(”秦“,”欢迎来到“)  推荐
print ”你好 {name} {welcome} 安徽“.format(name=”秦“,welcome=”欢迎来到“) 推荐
print ”this is %(whose)s %(fruit)s“ % {‘whose’:‘my’,‘fruit’:‘apple’}


如何拆分含有多种分隔符的字符串:
        s='a,se:5;6tt|trtr\dsdss'
        解决方案:
            #1.连续使用str.split() 方法 每次处理一张分隔符号
                t=[]
                map(lambda s: t.extend(s.split(',')),res)
                print t
                继续分割

                #备注如果含有空格 制表符 换行符等 可以直接使用 s.split()
                #过滤空字符串
                [x for x in res if x] #排除res列表中的空字符串

            #2.使用正则表达式的re.split() 方法,一次拆分字符串 推荐
                import re
                print re.split(r'[,:|\+]',s)


如何判断字符串a是否以字符串b开头或结尾
    解决方案:
        使用字符串的str.startwith()str.endswith()方法。
        注意:多个匹配是参数使用元组 

如何调整字符串中文本的格式
    如一段文本中的日期格式
    解决方案:
        使用正则表达式re.sub()方法做字符串替换,利用正则表达式的捕获组,捕获每个部分的内容,在替换字符串中调整各个捕获组的顺序
        
        log = open('/var/log/dpkg.log').read()

        import re
        print re.sub('(\d{4})-(\d{2})-(\d{2})',r'\2/\3/1',log) # 年月日 信息 分成捕获组 加'r' 防止使用原始字符串 不加是转义的意思
        print re.sub('(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})',r'\g<month>/\g<day>/\g<year>',log) # 年月日 信息 分成捕获组 加'r' 防止使用原始字符串 不加是转义的意思

如何将多个小字符串拼接成一个大字符串
   解决方案:
       1.使用 +
       2.使用 join

        s1 = 'abcdef'
        s2 = '12345'
        print s1+s2

        print ';'.join(['ab','2332','dfddfd','222']) # ab;2332;dfddfd;222
        print ''.join(['ab','2332','dfddfd','222']) # ab2332dfddfd222

        ''.jion(str(x) for x in l) #使用生成器 而不是列表 开销小

如何对字符串进行左右居中对齐
    解决方案:
        1.使用字符串的str.ljust(),str.rjust,str.center()进行左右居中对齐
        2.使用format()方法,传递类似'<20','<20','^20' 参数完成同样的任务

    测试:
        a = 'abc'
        print a.ljust(20)
        print a.ljust(20,'=')
        print a.rjust(20)

        print format(a,'<20')

如何去掉字符中不需要的字符
    解决方案:
        1.字符串strip(),lstrip(),rstrip() 方法去掉字符串两端字符
            可以去除空字符串 如s.strip() 去掉两边的字符串
            去掉指定字符需要指定参数 s='++aaa====' 则:s.strip('+=')去掉左右的+= 最后结果为'aaa'
        2.删除单个固定位置的字符,可以使用切片+拼接的方法
            s = 'abc:123'
            s[:3]+s[4:] #去掉:
        3.字符串的replace()方法或者正则表达式re.sub()删除任意位置的字符
            s = '\tabc\t123\txyz'
            s.replace('\t','')

            s= '\taaa\rbbb\t'
            import re
            re.sub('[\t\r]','',s)

        4.字符串translate()方法,可以同时删除多种不同字符
            str.translate 用例:
            s = 'abc122333222xyz' #把a、b、c 分别替换成 x、y、z 同时把 x、y、z 替换成 a、b、c

            import string
            string.maketrans('abcxyz','xyzabc')
            print s.translate(string.maketrans('abcxyz','xyzabc'))

            s= '\taaa\rbbb\t'
            print s.translate(None,'\t\r\n')

            /usr/local/tomcat/webapps/yoa/WEB-INF/views/modules/manager

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值