>> li = [ cxk , cxk , kk , caibi ] >>> .join([str(i) for i in..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python超詳細(xì)的字符串用法大全

發(fā)布時(shí)間:2020-07-15 06:24:12 來(lái)源:網(wǎng)絡(luò) 閱讀:283 作者:Python熱愛(ài)者 欄目:編程語(yǔ)言

字符串拼接

實(shí)際場(chǎng)景:把列表中的數(shù)據(jù)拼接成一個(gè)字符串

解決方案:使用 str.join() 方法

>>> li = ['cxk', 'cxk', 'kk', 'caibi']
>>> ''.join([str(i) for i in li])
'cxkcxkkkcaibi'

推薦使用生成器表達(dá)式,如果列表很大,可以節(jié)省很多內(nèi)存空間

>>> ''.join(str(i) for i in li)
'3cxkkkcaibi'

拆分含有多種分隔符的字符串

實(shí)際場(chǎng)景:把某個(gè)字符串依據(jù)分割符號(hào)拆分不同的字段,該字符串包含多種不同的分隔符

s = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"

1.使用 python 中的 split() 方法,由于 split 一次處理一個(gè)分隔符,例如:

>>> 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é)果變成了一個(gè)二維列表,而我們想要的結(jié)果是一維列表,怎么辦?

創(chuàng)建一個(gè)臨時(shí)列表保存結(jié)果。

'''
遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:××× 尋找有志同道合的小伙伴,
互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)!
'''
>>> 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ù)期!接下來(lái)繼續(xù)處理剩余的分隔符,重復(fù)動(dòng)作,用 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"))
運(yùn)行結(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é)果一致,是不是很簡(jiǎn)單粗暴!

判讀字符串a(chǎn)是否以字符串b開(kāi)頭或結(jié)尾
實(shí)際場(chǎng)景:比如某目錄下有一系列文件:
Python超詳細(xì)的字符串用法大全
編寫(xiě)程序給其中所有 .txt 文件和 .py 文件加上用戶可執(zhí)行權(quán)限

解決方案:

使用字符串 str.startswith() 和 str.endswith()

找出以 .txt 和 .py 結(jié)尾的文件,其接受一個(gè)元組

>>> 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)整字符串中文本的格式

實(shí)際案列:例如在日志文件中,其中日期格式為'yyyy-mm-dd':

我們想把其中的日期改為美國(guó)日期格式'mm/dd/yyyy'.比如 2019-06-12 改成 06/12/2019 格式

解決方案:使用 re 中的 sub() 方法做字符串替換

利用正則表達(dá)式中的捕獲組,捕獲每個(gè)部分的內(nèi)容,然后在替換在替換的字符串中調(diào)整各個(gè)捕獲組的順序!

代碼如下:

'''
遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:××× 尋找有志同道合的小伙伴,
互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)!
'''
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))

捕獲組中每組需要用括號(hào)括起來(lái),然后默認(rèn)從左至右分為組1, 組2…

下一個(gè)參數(shù)是我們要替換的格式,用 1,2,3 分別表示組1, 組2…

運(yùn)行結(jié)果如下:
Python超詳細(xì)的字符串用法大全

對(duì)字符串進(jìn)行左,右,居中對(duì)齊

解決方案:

1.使用字符串中的 str.ljust(), str.rjust(), str.center() 進(jìn)行左右居中對(duì)齊!
以上三種方法的基本用法:

>>> s = 'abc'
>>> s.ljust(20, '=')
'abc================='
>>> s.ljust(20)
'abc           '

三種方法都可以設(shè)置默認(rèn)填充值

2.使用內(nèi)置的 format() 方法

>>> format(s, ">20")
'                 abc'
>>> format(s, "<20")
'abc                 '
>>> format(s, "^20")
'        abc         '

刪除字符串中不需要的字符

實(shí)際案例:

過(guò)濾掉用戶輸入中前后多余的空白字符:“ nick2008@gmail.com ”

過(guò)濾掉某 windows 下編輯文本中的 “\r” :“hello world \r\n”

去掉文本中的 unicode 組合符號(hào)(音調(diào)):nǐ hǎo mā

解決方案:

使用 str.strip(), str.lstrip(), str.rstrip() 方法去掉字符串兩端字符

使用 str.replace() 或者正則中的 re.sub()

使用字符串中 str.translate() 方法,可以同時(shí)刪除多個(gè)不同的字符

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI