zoukankan      html  css  js  c++  java
  • [No000078]Python3 字符串操作

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    '''Python 字符串操作
    string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等
    @author: HK
    '''
    if __name__ == '__main__':
        s = '   s  dfg hjk,大    家好,。:?-_+0  '
    #去两边空格及指定符号
        print(s.strip())#两边都替换
    #     Return a copy of the string S with leading and trailing
    #     whitespace removed.
    #     If chars is given and not None, remove characters in chars instead.
        print(s.lstrip('s'))#左替换
        print(s.rstrip('_+0  '))#右替换    
    #复制字符串,类似C语言中的strcpy(sStr1,sStr2)
        sStr1 = 'strcpy'
        sStr2 = sStr1
        sStr1 = 'strcpy2'
        print(sStr2,sStr1,sStr2,sStr1)    
    #连接字符串,类似C语言中的strcat(sStr1,sStr2)    
        sStr1 = 'strcat'
        sStr2 = 'append'
        sStr1 += sStr2
        print(sStr1)
    #查找字符,类似C语言中的strchr(sStr1,sStr2)
        sStr1 = 'strchr'
        sStr2 = 'tr'#< 0 为未找到
        nPos = sStr1.index(sStr2)
        print(nPos)
    #比较字符串,类似C语言中的strcmp(sStr1,sStr2),py3中取消了cmp函数cmp(sStr1,sStr2),对于int可以用表达式(a > b) - (a < b)代替cmp(a,b)
        sStr1 = 'strchr'
        sStr2 = 'strch'   
        print((sStr1 == sStr2))
    #扫描字符串是否包含指定的字符,类似C语言中的strspn(sStr1,sStr2)
        sStr1 = '12345678'#sStr1 and chars both in sStr1 and sStr2
        sStr2 = '567'   
        print(sStr1.count(sStr2)>0)
        print('abcde'.find('bcd') >= 0)
    #字符串长度类似C语言中的strlen(sStr1)
        sStr1 = 'strlen'
        print(len(sStr1))
    #将字符串中的大小写转换,类似C语言中的strlwr(sStr1)
        sStr1 = 'JCstrlwr'
        print(sStr1.upper())
        sStr1 = sStr1.lower()
        print(sStr1)
    #追加指定长度的字符串,类似C语言中的strncat(sStr1,sStr2,n)
        sStr1 = '12345'
        sStr2 = 'abcdef'
        n = 3
        sStr1 += sStr2[0:n]
        print(sStr1)
    #字符串指定长度比较,类似C语言中的strncmp(sStr1,sStr2,n)
        sStr1 = '12345'
        sStr2 = '123bc'
        n = 3
        print((sStr1[0:n]==sStr2[0:n]))
    #复制指定长度的字符,类似C语言中的strncpy(sStr1,sStr2,n)
        sStr1 = ''
        sStr2 = '12345'
        n = 3
        sStr1 = sStr2[0:n]
        print(sStr1)
    #将字符串前n个字符替换为指定的字符,类似C语言中的strnset(sStr1,ch,n)
        sStr1 = '12345'
        ch = 'r'
        n = 3
        sStr1 = n * ch + sStr1[n:]
        print(sStr1)
    #扫描字符串,类似C语言中的strpbrk(sStr1,sStr2)
        sStr1 = 'cekjgdklab'
        sStr2 = 'gka'
        nPos = -1
        for c in sStr1:
            if c in sStr2:
                nPos = sStr1.index(c)
                break
        print(nPos)#sStr1中第几个字符开始包含sStr2中的字符
    #翻转字符串,类似C语言中的strrev(sStr1)
        sStr1 = 'abcdefg'
        sStr1 = sStr1[::-1]
        print(sStr1)
    #查找字符串,类似C语言中的strstr(sStr1,sStr2)
        sStr1 = 'abcdefg'
        sStr2 = 'cde'
        print(sStr1.find(sStr2))#sStr1中从那个下标开始包含sStr2
    #分割字符串,类似C语言中的strtok(sStr1,sStr2)
        sStr1 = 'ab,cde,fgh,ijk'
        sStr2 = ','
        sStr1 = sStr1[sStr1.find(sStr2) + 1:]
        print(sStr1)#分割一次!或者
        s = 'ab,cde,fgh,ijk'
        print(s.split(','))#全局分割
    #连接字符串
        delimiter = ','
        mylist = ['Brazil', 'Russia', 'India', 'China']
        print(delimiter.join(mylist))
    #PHP 中 addslashes 的实现,防止SQL注入攻击
        def addslashes(s):
            d = {'"':'\"', "'":"\'", "":"\", "\":"\\"}
            return ''.join(d.get(c, c) for c in s)#D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.
            #可以用return '$'.join(d.get(c, c) for c in s)做测试
        s = '''John 'Johny' Doe (a.k.a. "Super Joe") break'''+' and '+'	 end'
        print(s)
        print(addslashes(s))
    #只显示字母与数字
        def OnlyCharAndNum(s,oth=''):
            s2 = s.lower();
            fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'
            for c in s2:
                if not c in fomart:
                    s = s.replace(c,'');
            return s;
          
        print(OnlyCharAndNum("a000 aa-b"))
    #截取字符串
        sStr = '0123456789'
        print(sStr[0:3])#截取第一位到第三位的字符
        print(sStr[:])#截取字符串的全部字符
        print(sStr[6:])#截取第七个字符到结尾
        print(sStr[:-3])#截取从头开始到倒数第三个字符之前
        print(sStr[2])#截取第三个字符
        print(sStr[-1])#截取倒数第一个字符
        print(sStr[::-1])#创造一个与原字符串顺序相反的字符串
        print(sStr[-3:-1])#截取倒数第三位与倒数第一位之前的字符
        print(sStr[-3:])#截取倒数第三位到结尾
        print(sStr[:-8:-1])#逆序截取,从最后一个倒数截取至倒数第8个字符‘2’步长为1
        print(sStr[:-8:-2])#逆序截取,从最后一个倒数截取至倒数第8个字符‘2’步长为2
        print(sStr[:-8:-5])#逆序截取,从最后一个倒数截取至倒数第8个字符‘2’步长为2
    #python 字符串替换2种方法:1用字符串本身的方法;2用正则来替换字符串
        a = 'hello word'
    #把a字符串里的word替换为python,1用字符串本身的replace方法
        print(a.replace('word','python'))#输出的结果是hello python
    #2用正则表达式来完成替换:
        import re
        reR = r'[wor]d' #perl写法
        strinfo = re.compile(reR) #编译后运行速度更快
        b = strinfo.sub('python',a)
        print(b)#输出hello wopython
  • 相关阅读:
    Spring基于注解整合Redis实现内容缓存
    配置Mybatis二级缓存为Redis来实现内容缓存
    Spring整合Redis
    Java连接redis
    机器学习之 KNN近邻算法(一)入门
    matplotlib 之 快速入门
    Pandas 之入门
    Hadoop 之 环形缓冲区原理
    numpy 之 rollaxis的理解
    python 之 遇到SyntaxError: Non-UTF-8 code starting with 'xb8' in file
  • 原文地址:https://www.cnblogs.com/Chary/p/No000078.html
Copyright © 2011-2022 走看看