Python超詳細的字符串用法大全

字符串拼接python

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

解決方案:使用 str.join() 方法正則表達式

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

推薦使用生成器表達式,若是列表很大,能夠節省不少內存空間chrome

>>> ''.join(str(i) for i in li)
'3cxkkkcaibi'
複製代碼

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

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

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

1.使用 python 中的 split() 方法,因爲 split 一次處理一個分隔符,例如:ide

>>> res = s.split(';')
>>> res
['ab', 'fd/ft|fs,f\tdf.fss*dfd', 'fs:uu}fsd']
複製代碼

因此咱們須要根據字符串中的分隔符,依次分割,能夠是 map 函數!函數

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

結果變成了一個二維列表,而咱們想要的結果是一維列表,怎麼辦?學習

建立一個臨時列表保存結果。ui

# Python學習交流QQ羣:857662006 
>>> 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']
複製代碼

結果符合咱們的預期!接下來繼續處理剩餘的分隔符,重複動做,用 for 循環搞定!

最終代碼以下:

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 re

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

結果一致,是否是很簡單粗暴!

判讀字符串a是否以字符串b開頭或結尾 實際場景:好比某目錄下有一系列文件:

在這裏插入圖片描述
編寫程序給其中全部 .txt 文件和 .py 文件加上用戶可執行權限

解決方案:

使用字符串 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':

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

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

利用正則表達式中的捕獲組,捕獲每一個部分的內容,而後在替換在替換的字符串中調整各個捕獲組的順序!

代碼以下:

import re
# Python學習交流QQ羣:857662006 
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…

下一個參數是咱們要替換的格式,用 1,2,3 分別表示組1, 組2…

運行結果以下:

在這裏插入圖片描述

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

解決方案:

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 '
複製代碼

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

實際案例:

過濾掉用戶輸入中先後多餘的空白字符:「 nick2008@gmail.com 」

過濾掉某 windows 下編輯文本中的 「\r」 :「hello world \r\n」

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

解決方案:

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

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

使用字符串中 str.translate() 方法,能夠同時刪除多個不一樣的字符

相關文章
相關標籤/搜索