超詳細的字符串用法大全

本文要點

  • 字符串拼接

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

  • 判讀字符串a是否以字符串b開頭或結尾

  • 調整字符串中文本的格式

  • 對字符串進行左徒溪,右,居中對齊

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

字符串拼接

實際場景:把列表中的數(shù)據拼接成一個字符串

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

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

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

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

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

實際場景:把某個字符串依據分割符號拆分不同的字段舵鳞,該字符串包含多種不同的分隔符

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']

所以我們需要根據字符串中的分隔符蜓堕,依次分割,可以是 map 函數(shù)博其!

>>> list(map(lambda x: x.split("|"), res))[['ab'], ['fd/ft', 'fs,f\tdf.fss*dfd'], ['fs:uu}fsd']]

結果變成了一個二維列表套才,而我們想要的結果是一維列表,怎么辦慕淡?

創(chuàng)建一個臨時列表保存結果背伴。

>>> 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']

結果符合我們的預期!接下來繼續(xù)處理剩余的分隔符儡率,重復動作挂据,用 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

將字符串和字符串中所有的分隔符傳入儿普,結果如下:

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

運行結果:['ab', 'fd', 'ft', 'fs', 'f', 'df', 'fss', 'dfd', 'fs', 'uu', 'fsd']

2.使用 re 模塊的中 split() 方法

re() 也給我們提供了 split() 方法崎逃,可以一次性分隔字符串!

import res = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"print(re.split('[;/|,.}:*\t]', s))

結果一致眉孩,是不是很簡單粗暴个绍!

判讀字符串a是否以字符串b開頭或結尾

實際場景:比如某目錄下有一系列文件:

image

編寫程序給其中所有 .txt 文件和 .py 文件加上用戶可執(zhí)行權限

解決方案:

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

找出以 .txt 和 .py 結尾的文件,其接受一個元組

>>> 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']

調整字符串中文本的格式

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

image

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

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

利用正則表達式中的捕獲組巴柿,捕獲每個部分的內容,然后在替換在替換的字符串中調整各個捕獲組的順序死遭!

代碼如下:

import rewith 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…

運行結果如下:

image

對字符串進行左糠聪,右,居中對齊

解決方案:

1.使用字符串中的 str.ljust(), str.rjust(), str.center() 進行左右居中對齊谐鼎!

以上三種方法的基本用法:

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

三種方法都可以設置默認填充值

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

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

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

實際案例

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

  2. 過濾掉某 windows 下編輯文本中的 “\r” :“hello world \r\n”

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

解決方案

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

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

  • 使用字符串中 str.translate() 方法舰蟆,可以同時刪除多個不同的字符

本文轉載自公眾號 Python編程與實戰(zhàn)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子身害,更是在濱河造成了極大的恐慌味悄,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件题造,死亡現(xiàn)場離奇詭異傍菇,居然都是意外死亡,警方通過查閱死者的電腦和手機界赔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牵触,“玉大人淮悼,你說我怎么就攤上這事±克迹” “怎么了袜腥?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钉汗。 經常有香客問我羹令,道長,這世上最難降的妖魔是什么损痰? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任福侈,我火速辦了婚禮,結果婚禮上卢未,老公的妹妹穿的比我還像新娘肪凛。我一直安慰自己,他們只是感情好辽社,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布伟墙。 她就那樣靜靜地躺著,像睡著了一般滴铅。 火紅的嫁衣襯著肌膚如雪戳葵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天汉匙,我揣著相機與錄音拱烁,去河邊找鬼。 笑死盹兢,一個胖子當著我的面吹牛邻梆,可吹牛的內容都是我干的。 我是一名探鬼主播绎秒,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼浦妄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起剂娄,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蠢涝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后阅懦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體和二,經...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年耳胎,在試婚紗的時候發(fā)現(xiàn)自己被綠了惯吕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡怕午,死狀恐怖废登,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情郁惜,我是刑警寧澤堡距,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站兆蕉,受9級特大地震影響羽戒,放射性物質發(fā)生泄漏。R本人自食惡果不足惜虎韵,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一易稠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劝术,春花似錦缩多、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绳泉,卻和暖如春逊抡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背零酪。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工冒嫡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人四苇。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓孝凌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親月腋。 傳聞我的和親對象是個殘疾皇子蟀架,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內容