[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 = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}
        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 \0'+'\t 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM