當前位置:首頁 » 編程語言 » python的字元串處理函數

python的字元串處理函數

發布時間: 2023-04-06 13:20:55

1. format在python中的用法

fotmat作為Python的的格式字元串函數,主要通過字元串中的花括弧{},來識別替換欄位,從而完成字元串的格式化。format是python2.6新增的一個格式化字元串的方法,相對於老版的%格式方法,它有很多優點。單個參數可以多次輸出,參數順序可以不相同。

python中的format函數用法

基本語法是通過{}和:來代替以前的%

1、例如輸出保留兩位的數字:print("{:.2f}".format(3.1456879)),且會四捨五入。

2、大括弧里可以填索引,以此來保證後續format中參數的順序位置,例如:

print("{2}{0}{1}".format("are","you","How"))

輸出為Howareyou,注意索引應從0開始。

而且需要注意的是如果未填索引,那麼會默認按format中參數順序位置填充,此時大括弧佔位數要與format參數相等。如果填充索引,索引數需要不大於format索引數。

3、如果是雙層大括弧結構,則認為第二層大括弧為普通字元串,不會進行格式化。例如:

print("{}對應的位置是{{普通字元串}}".format("字元串"))

輸出為:字元串對應的位置是{普通字元串},注意加粗部分,第二層大括弧會作為普通的字元串,不會進行格式化。

2. python 8個常用內置函數解說

8個超好用內置函數set(),eval(),sorted(),reversed(),map(),rece(),filter(),enumerate()

python中有許多內置函數,不像print那麼廣為人知,但它們卻異常的強大,用坦棗好了可以大大提高代碼效率。

這次來梳理下8個好用的python內置函數

1、set()

當需要對一個列表進行去重操作的時候,set()函數就派上用場了。

用於創建一個集合,集合里的元素是無序且不重復的。集合對象創建後,還能使用並集、交集、差集功能。

2、eval()之前有人問如何用python寫一個四則運算器,輸入字元串公式,直接產生結果。用eval()來做就很簡單:eval(str_expression)作用是將字元串轉換成表達式,並且執行。

3、sorted()在處理數據過程中,我們經常會用到排序操作,比如將列表、字典、元組裡面的元素正/倒排序。這時候就需要用到sorted() ,它可以對任何可迭代對象進行排序,並返回列表。對列表升序操作:

對元組倒序操作:

使用參數:key,根據自定義規則,按字元串長度來排序:

根據自定義規則,對元組構成的列表進行排序:

4、reversed()如果需要對序列的元素進行反轉操作,reversed()函數能幫到你。reversed()接受一個序列,將序列里的元素反轉,並最終返回迭代器。

5、map()做文本處理的時候,假如要對序列里的每個單詞進行大寫轉化操作。這個時候就可以使用map()函數。

map()會根據提供的函數,對指定的序列做映射,最終返回迭代器。也就是說map()函數會把序列里的每一個元素用指定的方法加工一遍,最終返回給你加工好的序列。舉個例子,對列表裡的每個數字作平方處理:

6、rece()前面說空備到對列表裡的每個數字作平方處理,用map()函數。那我想將列表裡的每個元素相乘,該怎麼做呢?這時候用到rece()函數。

rece()會對參數序列中元素進行累積。第一、第二個元素先進行函數操作,生成的結果再和第三個元素進行函數操作,以此類推,最終生成所有元素累積運讓虧拆算的結果。再舉個例子,將字母連接成字元串。

你可能已經注意到,rece()函數在python3里已經不再是內置函數,而是遷移到了functools模塊中。這里把rece()函數拎出來講,是因為它太重要了。

7、filter()一些數字組成的列表,要把其中偶數去掉,該怎麼做呢?

filter()函數輕松完成了任務,它用於過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象。filter()函數和map()、rece()函數類似,都是將序列里的每個元素映射到函數,最終返回結果。我們再試試,如何從許多單詞里挑出包含字母w的單詞。

8、enumerate()這樣一個場景,同時列印出序列里每一個元素和它對應的順序號,我們用enumerate()函數做做看。

enumerate翻譯過來是枚舉、列舉的意思,所以說enumerate()函數用於對序列里的元素進行順序標注,返回(元素、索引)組成的迭代器。再舉個例子說明,對字元串進行標注,返回每個字母和其索引。

3. python字元串常用方法

python字元串常用方法
1. Python字元串拼接(包含字元串拼接數字)
2. Python截取字元串(字元串切片)
3. Python 的len()函數:獲取字元串長度或位元組數
4. Python split()方法:分割字元串
5. Python join()方法:合並字元串
6. Python count()方法:統計字元串出現的次數
7. Python find()方法:檢測字元串中是否包含某子串
8. Python index()方法:檢測字元串中是否包含某子串
9. Python字元串對齊方法(ljust()、rjust()和center())
10. Python startswith()和endswith()方法
11. Python字元串大小寫轉換(3種)函數
12. Python去除字元串中空格(刪除指定字元)的3種方法

4. python 字元串提取信息方法總結

在日常項目中,我們經常會使用python從字元串中提取我們想要的信息,以下是各種提取信息方法的總結。

格式: str[beg:end:step]
描述: 字元串[開始索引:結束索引:步長]切取字元串為開始索引到結束索引-1內的字元串步長不指定時步長為1

舉例:
print(str[::2]) //::這里表示整個字元串,每兩個位置提取一個
print(str[1:3]) //提取第2個到第3個
print(str[2::]) //截取2 - 末尾的字元

本小節介紹了,處理字元串經常用到的一些函數方法。

語法: str.find(str, beg=0, end=len(string))
描述: Python find() 方法檢測字元串中是否包含子字元串 str ,如果指定 beg(開始) 和 end(結束) 范圍,則檢查是否包含在指定范圍內,如果包含子字元串返回開始的索引值,否則返回-1。

語法: str.split(str="", num=string.count(str)).
描述: Python split() 通過指定分隔符對字元串進行切片,如果參數 num 有指定值,則分隔 num+1 個子字元串.返回分割後的字元串列表,該方法可以講字元串轉化為列表處理。

另外的: str.splitlines([keepends])按照行(' ', ' ', ')分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。

語法: str.partition(str)
描述: partition() 方法用來根據指定的分隔符將字元串進行分割。如果字元串包含指定的分隔符,則返回一個3元的元組,第一個為分隔符左邊的子串,第二個為分隔符本身,第三個為分隔符右邊的子串。

語法: str.replace(old, new, max)
描述: Python replace() 方法把字元串中的 old(舊字元串) 替換成 new(新字元串),如果指定第三個參數max,則替換不超過 max 次。

語法: str.strip([chars]);
描述: Python strip() 方法用於移除字元串頭尾指定的字元(默認為空格或換行符)或字元序列。:該方法只能刪除開頭或是結尾的字元,不能刪除中間部分的字元。

語法: str.join(sequence)
描述: Python join() 方法用於將序列中的元素以指定的字元連接生成一個新的字元串。

上述方法還有其變形,如str.rfind(),這代表從字元串右邊開始處理,正常是從左邊開始處理。下表是其它常用的python字元串自帶函數方法。

正則表達式是一個特殊的字元序列,它能幫助你方便的檢查一個字元串是否與某種模式匹配。本小節主要介紹Python中常用的正則表達式處理函數和正則表達式的書寫規則。
re 模塊使 Python 語言擁有全部的正則表達式功能。所以在python中使用正則表達式處理函數需要import re

語法: re.search(pattern, string, flags=0)
描述: re.search 掃描整個字元串並返回第一個成功的匹配。匹配成功re.search方法返回一個匹配的對象,否則返回None。

語法: re.sub(pattern, repl, string, count=0, flags=0)
描述: Python 的 re 模塊提供了re.sub用於替換字元串中的匹配項。

語法: pattern.findall(string, pos, endpos)
描述: 在字元串中找到正則表達式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。注意: match 和 search 是匹配一次 findall 匹配所有。

模式字元串使用特殊的語法來表示一個正則表達式:

5. 在Python中使用字元串調用函數

已有字元串形式的函數名稱,那麼如何調用這個函數呢?

通過調用內置函數locals()和globals()返回的字典對象,就可以可以獲得名稱與對象的映射關系。其中,locals()僅在全局范圍內調用時可以獲得函數對象。 我們來看以下的例子。

需要注意的是,使用上述方法通過字元串調用函數時,為了系統的安全,防止執行任意函數,需要對函數名做一些處理,也就是使用統一的前綴為這些函數命名。例如在上述例子中,使用前綴cmd_+函數名的形式定義函數(cmd_help,cmd_sum)。
在傳入函數名字元串時,只傳入函數名的後半部分(如"help","sum"),由程序添加前綴後組成完整的函數名,再調用該函數。

對於類的成員函數,則可以使用getattr()獲得類成員函數。

上述代碼通過字元串調用了類成員函數,與前一段代碼執行的結果相同。

此外,還可以使用字典將字元串與函數對應起來調用,缺點就是每增加一個函數需要相應在字典對象中添加相應的鍵值,增加代碼維護工作量。

以上代碼在Python 3.6以上運行通過。

6. Python常用的正則表達式處理函數詳解

正則表達式是一個特殊的字元序列,用於簡潔表達一組字元串特徵,檢查一個字元串是否與某種模式匹配,使用起來十分方便。

在Python中,我們通過調用re庫來使用re模塊:

import re

下面介紹Python常用的正則表達式處理函數。

re.match函數

re.match 函數從字元串的起始位置匹配正則表達式,返回match對象,如果不是起始位置匹配成功的話,match()就返回None。

re.match(pattern, string, flags=0)

pattern:匹配的正則表達式。

string:待匹配的字元串。

flags:標志位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。具體參數為:

re.I:忽略大小寫。

re.L:表示特殊字元集 w, W, , B, s, S 依賴於當前環境。

re.M:多行模式。

re.S:即 . ,並且包括換行符在內的任意字元(. 不包括換行符)。

re.U:表示特殊字元集 w, W, , B, d, D, s, S 依賴於 Unicode 字元屬性資料庫

re.X:為了增加可讀性,忽略空格和 # 後面的注釋。

import re #從起始位置匹配 r1=re.match('abc','abcdefghi') print(r1) #不從起始位置匹配 r2=re.match('def','abcdefghi') print(r2)

運行結果:

其中,span表示匹配成功的整個子串的索引。

使用group(num) 或 groups() 匹配對象函數來獲取匹配表達式。

group(num):匹配的整個表達式的字元串,group() 可以一次輸入多個組號,這時它將返回一個包含那些組所對應值的元組。

groups():返回一個包含所有小組字元串的元組,從 1 到 所含的小組號。

import re s='This is a demo' r1=re.match(r'(.*) is (.*)',s) r2=re.match(r'(.*) is (.*?)',s) print(r1.group()) print(r1.group(1)) print(r1.group(2)) print(r1.groups()) print() print(r2.group()) print(r2.group(1)) print(r2.group(2)) print(r2.groups())

運行結果:

上述代碼中的(.*)和(.*?)表示正則表達式的貪婪匹配與非貪婪匹配。

re.search函數

re.search函數掃描整個字元串並返回第一個成功的匹配,如果匹配成功則返回match對象,否則返回None。

re.search(pattern, string, flags=0)

pattern:匹配的正則表達式。

string:待匹配的字元串。

flags:標志位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。

import re #從起始位置匹配 r1=re.search('abc','abcdefghi') print(r1) #不從起始位置匹配 r2=re.search('def','abcdefghi') print(r2)

運行結果:

使用group(num) 或 groups() 匹配對象函數來獲取匹配表達式。

group(num=0):匹配的整個表達式的字元串,group() 可以一次輸入多個組號,這時它將返回一個包含那些組所對應值的元組。

groups():返回一個包含所有小組字元串的元組,從 1 到 所含的小組號。

import re s='This is a demo' r1=re.search(r'(.*) is (.*)',s) r2=re.search(r'(.*) is (.*?)',s) print(r1.group()) print(r1.group(1)) print(r1.group(2)) print(r1.groups()) print() print(r2.group()) print(r2.group(1)) print(r2.group(2)) print(r2.groups())

運行結果:


從上面不難發現re.match與re.search的區別:re.match只匹配字元串的起始位置,只要起始位置不符合正則表達式就匹配失敗,而re.search是匹配整個字元串,直到找到一個匹配為止。

re.compile 函數

compile 函數用於編譯正則表達式,生成一個正則表達式對象,供 match() 和 search() 這兩個函數使用。

re.compile(pattern[, flags])

pattern:一個字元串形式的正則表達式。

flags:可選,表示匹配模式,比如忽略大小寫,多行模式等。

import re #匹配數字 r=re.compile(r'd+')  r1=r.match('This is a demo') r2=r.match('This is 111 and That is 222',0,27) r3=r.match('This is 111 and That is 222',8,27)   print(r1) print(r2) print(r3)

運行結果:

findall函數

搜索字元串,以列表形式返回正則表達式匹配的所有子串,如果沒有找到匹配的,則返回空列表。

需要注意的是,match 和 search 是匹配一次,而findall 匹配所有。

findall(string[, pos[, endpos]])

string:待匹配的字元串。

pos:可選參數,指定字元串的起始位置,默認為0。

endpos:可選參數,指定字元串的結束位置,默認為字元串的長度。

import re #匹配數字 r=re.compile(r'd+')  r1=r.findall('This is a demo') r2=r.findall('This is 111 and That is 222',0,11) r3=r.findall('This is 111 and That is 222',0,27)   print(r1) print(r2) print(r3)

運行結果:

re.finditer函數

和 findall 類似,在字元串中找到正則表達式所匹配的所有子串,並把它們作為一個迭代器返回。

re.finditer(pattern, string, flags=0)

pattern:匹配的正則表達式。

string:待匹配的字元串。

flags:標志位,用於控制正則表達式的匹配方式,如是否區分大小寫,多行匹配等。

import re  r=re.finditer(r'd+','This is 111 and That is 222') for i in r:   print (i.group())

運行結果:

re.split函數

將一個字元串按照正則表達式匹配的子串進行分割後,以列表形式返回。

re.split(pattern, string[, maxsplit=0, flags=0])

pattern:匹配的正則表達式。

string:待匹配的字元串。

maxsplit:分割次數,maxsplit=1分割一次,默認為0,不限次數。

flags:標志位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等。

import re  r1=re.split('W+','This is 111 and That is 222')  r2=re.split('W+','This is 111 and That is 222',maxsplit=1)  r3=re.split('d+','This is 111 and That is 222')  r4=re.split('d+','This is 111 and That is 222',maxsplit=1)  print(r1) print(r2) print(r3) print(r4)

運行結果:

re.sub函數

re.sub函數用於替換字元串中的匹配項。

re.sub(pattern, repl, string, count=0, flags=0)

pattern:正則中的模式字元串。

repl:替換的字元串,也可為一個函數。

string:要被查找替換的原始字元串。

count:模式匹配後替換的最大次數,默認0表示替換所有的匹配。

import re  r='This is 111 and That is 222' # 刪除字元串中的數字 r1=re.sub(r'd+','',r) print(r1) # 刪除非數字的字元串  r2=re.sub(r'D','',r) print(r2)

運行結果:

到此這篇關於Python常用的正則表達式處理函數詳解的文章就介紹到這了,希望大家以後多多支持!

7. python字元串操作集合

把字元串變數和字面值連接起來,組成新的字元串。推薦3個方法:

對字元串進行單個字元索引時,無論是從前往後索引,還是從後往前索引,索引序號一定要在范圍內,否則出錯。
對字元串進行切片截取時,採用 str[start:end] 的方式。start,end可以正,可以負。且如果start標識的位置大於等於end標識的位置,則截取字元串為空。start,end超出字元串的極限位置,那麼就用最值。start默認為0,end默認為字元串長度。

一般的基於文本和行字元串處理,使用sed,awk,grep等工具就可以了,這些命令行工具用起來更便捷,但是也沒有python的這些函數強大。比如沒法實現非貪婪模式匹配。如下:

把連續的數字提取出來,其他的字元拋棄

python處理字元串,比linux命令要復雜一些,功能也更強大一些。對於簡單的處理任務,linux命令已經足夠,python為的是一些更復雜的處理操作。如果兩者都會,豈不是更好?

8. eval在python中的用法

python中eval函數用法如下:

1、計算字元串中有效的表達式,並返回結果。

2、將字元串轉成相應的對象(如list、tuple、dict和string之間的轉換)。

3、將利用反引號轉換的字元串再反轉回對象。

eval函數主要是用來實現python中各種數據類型與str之間的轉換。字元串中包含的什麼,通過eval函數就可以輸出什麼。比如字元串裡麵包含的字典就輸出字典,包含的列表就輸出列表,但是字元串相應的格式吵蔽緩一定要輸入正確,否則會報錯。

通常在Python中使用這個函數,可以對一個字元串進行操作,最後返回的是一個表示式中的值,可以通過字元函數,也可以將一個字元串轉換成一個列表、元組或者是一個字典。

eval函數的應用

1、字元串轉換成列表

剛升模才說了,這個函數是可以將任意的字元串轉換成那三種基本的數據類型的。在代碼並羨中,a變數存放的是一個字元串類型數據,通過eval函數進行轉換,後面b變數存的是列表類型數據。

2、eval返回表達式的值

eavl函數除了對類型進行轉換之外,還可以將參數設置為一個表達式,如何對表達式進行返回。

9. Python處理字元串必備方法

字元串是Python中基本的數據類型,幾乎在每個Python程序中都會使用到它。

▍1、Slicing

slicing切片,按照一定條件從列表或者元組中取出部分元素(比如特定范圍、索引、分割值)

▍2、****strip()

strip()方法用於移除字元串頭尾指定的字元(默認為空格或換行符)或字元序列。

在使用strip()方法時,默認去除空格或換行符,所以#號並沒有去除。

可以給strip()方法添加指定字元,如下所示。

此外當指定內容不在頭尾處時,並不會被去除。

第一個 前有個空格,所以只會去取尾部的換行符。

最後strip()方法的參數是剝離其值的所有組合,這個可以看下面這個案例。

最外層的首字元和尾字元參數值將從字元串中剝離。字元從前端移除,直到到達一個不包含在字元集中的字元串字元為止。

在尾部也會發生類似的動作。

▍3、****lstrip()

移除字元串左側指定的字元(默認為空格或換行符)或字元序列。

同樣的,可以移除左側所有包含在字元集中的字元串。

▍4、rstrip()

移除字元串右側指定的字元(默認為空格或換行符)或字元序列。

▍5、****removeprefix()

Python3.9中移除前綴的函數。

和strip()相比,並不會把字元集中的字元串進行逐個匹配。

▍6、removesuffix()

Python3.9中移除後綴的函數。

▍7、****replace()

把字元串中的內容替換成指定的內容。

▍8、****re.sub()

re是正則的表達式,sub是substitute表示替換。

re.sub則是相對復雜點的替換。

和replace()做對比,使用re.sub()進行替換操作,確實更高級點。

▍9、****split()

對字元串做分隔處理,最終的結果是一個列表。

當不指定分隔符時,默認按空格分隔。

此外,還可以指定字元串的分隔次數。

▍10、****rsplit()

從右側開始對字元串進行分隔。

▍11、****join()

string.join(seq)。以string作為分隔符,將seq中所有的元素(的字元串表示)合並為一個新的字元串。

▍12、****upper()

將字元串中的字母,全部轉換為大寫。

▍13、****lower()

將字元串中的字母,全部轉換為小寫。

▍14、capitalize()

將字元串中的首個字母轉換為大寫。

▍15、****islower()

判斷字元串中的所有字母是否都為小寫,是則返回True,否則返回False。

▍16、isupper()

判斷字元串中的所有字母是否都為大寫,是則返回True,否則返回False。

▍17、****isalpha()

如果字元串至少有一個字元並且所有字元都是字母,則返回 True,否則返回 False。

▍18、isnumeric()

如果字元串中只包含數字字元,則返回 True,否則返回 False。

▍19、isalnum()

如果字元串中至少有一個字元並且所有字元都是字母或數字,則返回True,否則返回 False。

▍20、count()

返回指定內容在字元串中出現的次數。

▍21、****find()

檢測指定內容是否包含在字元串中,如果是返回開始的索引值,否則返回-1。

此外,還可以指定開始的范圍。

▍22、rfind()

類似於find()函數,返回字元串最後一次出現的位置,如果沒有匹配項則返回 -1。

▍23、startswith()

檢查字元串是否是以指定內容開頭,是則返回 True,否則返回 False。

**
**

▍24、****endswith()

檢查字元串是否是以指定內容結束,是則返回 True,否則返回 False。

▍25、****partition()

string.partition(str),有點像find()和split()的結合體。

從str出現的第一個位置起,把字元串string分成一個3 元素的元組(string_pre_str,str,string_post_str),如果string中不包含str則 string_pre_str==string。

▍26、center()

返回一個原字元串居中,並使用空格填充至長度width的新字元串。

▍27、ljust()

返回一個原字元串左對齊,並使用空格填充至長度width的新字元串。

▍28、rjust()

返回一個原字元串右對齊,並使用空格填充至長度width的新字元串。

▍29、f-Strings

f-string是格式化字元串的新語法。

與其他格式化方式相比,它們不僅更易讀,更簡潔,不易出錯,而且速度更快!

▍30、swapcase()

翻轉字元串中的字母大小寫。

▍31、zfill()

string.zfill(width)。

返回長度為width的字元串,原字元串string右對齊,前面填充0。

參考文獻: https://mp.weixin.qq.com/s/9cuO-KL3g9ldqRGGZBVnjw

熱點內容
android讓狀態欄透明 發布:2024-11-02 12:20:09 瀏覽:180
java反射使用 發布:2024-11-02 12:09:03 瀏覽:920
賺錢游戲掛機腳本鏈接 發布:2024-11-02 12:08:22 瀏覽:810
windowsxp用戶名和密碼是什麼啊 發布:2024-11-02 12:03:13 瀏覽:950
工行解壓碼 發布:2024-11-02 12:03:07 瀏覽:118
本田冠道出廠配置什麼牌子輪胎 發布:2024-11-02 12:03:07 瀏覽:470
怎麼打開被gcc編譯過的軟體 發布:2024-11-02 12:00:52 瀏覽:435
新時達as380原始密碼是多少 發布:2024-11-02 11:51:27 瀏覽:810
導航網站源碼下載 發布:2024-11-02 11:49:55 瀏覽:976
飢荒搭建的伺服器如何換新檔 發布:2024-11-02 11:48:11 瀏覽:958