字符串拼接
創(chuàng)新互聯(lián) - 多線服務(wù)器托管,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽服務(wù)器托管,德陽服務(wù)器托管,遂寧服務(wù)器托管,綿陽服務(wù)器托管,四川云主機,成都云主機,西南云主機,多線服務(wù)器托管,西南服務(wù)器托管,四川/成都大帶寬,大帶寬服務(wù)器,四川老牌IDC服務(wù)商實際場景:把列表中的數(shù)據(jù)拼接成一個字符串
解決方案:使用 str.join() 方法
>>> li = ['cxk', 'cxk', 'kk', 'caibi']
>>> ''.join([str(i) for i in li])
'cxkcxkkkcaibi'
推薦使用生成器表達式,如果列表很大,可以節(jié)省很多內(nèi)存空間
>>> ''.join(str(i) for i in li)
'3cxkkkcaibi'
拆分含有多種分隔符的字符串
實際場景:把某個字符串依據(jù)分割符號拆分不同的字段,該字符串包含多種不同的分隔符
s = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"
1.使用 python 中的 split() 方法,由于 split 一次處理一個分隔符,例如:
>>> res = s.split(';')
>>> res
['ab', 'fd/ft|fs,f\tdf.fss*dfd', 'fs:uu}fsd']
所以我們需要根據(jù)字符串中的分隔符,依次分割,可以是 map 函數(shù)!
>>> list(map(lambda x: x.split("|"), res))
[['ab'], ['fd/ft', 'fs,f\tdf.fss*dfd'], ['fs:uu}fsd']]
結(jié)果變成了一個二維列表,而我們想要的結(jié)果是一維列表,怎么辦?
創(chuàng)建一個臨時列表保存結(jié)果。
'''
遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:××× 尋找有志同道合的小伙伴,
互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
>>> t = []
>>> list(map(lambda x: t.extend(x.split("|")), res))
[None, None, None]
>>> t
['ab', 'fd/ft', 'fs,f\tdf.fss*dfd', 'fs:uu}fsd']
結(jié)果符合我們的預(yù)期!接下來繼續(xù)處理剩余的分隔符,重復(fù)動作,用 for 循環(huán)搞定!
最終代碼如下:
def my_split(s, ds):
res = [s]
for d in ds:
t = []
list(map(lambda x: t.extend(x.split(d)), res))
res = t
return res
將字符串和字符串中所有的分隔符傳入,結(jié)果如下:
s = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"
print(my_split(s, ";/|,.}:*\t"))
運行結(jié)果:['ab', 'fd', 'ft', 'fs', 'f', 'df', 'fss', 'dfd', 'fs', 'uu', 'fsd']
2.使用 re 模塊的中 split() 方法
re() 也給我們提供了 split() 方法,可以一次性分隔字符串!
import re
s = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"
print(re.split('[;/|,.}:*\t]', s))
結(jié)果一致,是不是很簡單粗暴!
判讀字符串a(chǎn)是否以字符串b開頭或結(jié)尾
實際場景:比如某目錄下有一系列文件:
編寫程序給其中所有 .txt 文件和 .py 文件加上用戶可執(zhí)行權(quán)限
解決方案:
使用字符串 str.startswith() 和 str.endswith()
找出以 .txt 和 .py 結(jié)尾的文件,其接受一個元組
>>> import os
>>> os.listdir(".")
['app', 'config', 'requirements.txt', 'run.py', '__pycache__', 'gunicorn.conf.py', 'chromedriver', 'login_after2.png', 'readme.txt', 'slide.png', 'test.py', 'logs', 'chrome-linux.zip', 'gunicorn.pid', 'asgi.py', 'chrome-linux']
>>> [name for name in os.listdir(".") if name.endswith((".txt", ".py"))]
['requirements.txt', 'run.py', 'gunicorn.conf.py', 'readme.txt', 'test.py', 'asgi.py']
調(diào)整字符串中文本的格式
實際案列:例如在日志文件中,其中日期格式為'yyyy-mm-dd':
我們想把其中的日期改為美國日期格式'mm/dd/yyyy'.比如 2019-06-12 改成 06/12/2019 格式
解決方案:使用 re 中的 sub() 方法做字符串替換
利用正則表達式中的捕獲組,捕獲每個部分的內(nèi)容,然后在替換在替換的字符串中調(diào)整各個捕獲組的順序!
代碼如下:
'''
遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:××× 尋找有志同道合的小伙伴,
互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
import re
with open("info.log", "r", encoding="utf-8") as f:
file = f.read()
print(re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', file))
捕獲組中每組需要用括號括起來,然后默認從左至右分為組1, 組2…
下一個參數(shù)是我們要替換的格式,用 1,2,3 分別表示組1, 組2…
運行結(jié)果如下:
對字符串進行左,右,居中對齊
解決方案:
1.使用字符串中的 str.ljust(), str.rjust(), str.center() 進行左右居中對齊!
以上三種方法的基本用法:
>>> s = 'abc'
>>> s.ljust(20, '=')
'abc================='
>>> s.ljust(20)
'abc '
三種方法都可以設(shè)置默認填充值
2.使用內(nèi)置的 format() 方法
>>> format(s, ">20")
' abc'
>>> format(s, "<20")
'abc '
>>> format(s, "^20")
' abc '
刪除字符串中不需要的字符
實際案例:
過濾掉用戶輸入中前后多余的空白字符:“ nick2008@gmail.com ”
過濾掉某 windows 下編輯文本中的 “\r” :“hello world \r\n”
去掉文本中的 unicode 組合符號(音調(diào)):nǐ hǎo mā
解決方案:
使用 str.strip(), str.lstrip(), str.rstrip() 方法去掉字符串兩端字符
使用 str.replace() 或者正則中的 re.sub()
使用字符串中 str.translate() 方法,可以同時刪除多個不同的字符
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁題目:Python超詳細的字符串用法大全-創(chuàng)新互聯(lián)
文章地址:http://jinyejixie.com/article36/dpeesg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、定制網(wǎng)站、品牌網(wǎng)站制作、小程序開發(fā)、品牌網(wǎng)站設(shè)計、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容