Python之string模塊(詳細講述string常見的所有方法)


相信不少學習python的程序員都接觸過string模塊

string模塊主要包含關於字符串的處理函數

多說無益,初學python的小伙伴還不趕緊碼起來

接下來將會講到字符串的大小寫、判斷函數、

以及字符串常規操作(填充、搜索、修改、剪切、添加、分割)

1.大小寫轉換

大小寫轉化在整個string操作中還是比較重要的,主要分三種類型

第一種:全部大小寫轉化upper()lower()

兩個函數如直譯一樣,將指定字符串變更大小寫后新生成字符串存儲

注意:這里是生成新的字符串來存放,所以不能作為操作來使用

upper()負責將指定字符串變為大寫,可以單獨使用,也可以放到print函數中

lower()負責將指定字符串變為小寫,可以單獨使用,也可以放到print函數中

代碼如下:

import string
s="abcde"
#放入print中使用
print(s.upper())
print(s.lower())
print("abcdef".upper())
print("QWERT".lower())
#這里注意是通過生成新的字符串而不是更改原來字符串
s.upper()print(s)

效果如下所示:

 第二種:將字符串首部變更大小寫title()capitalize()

title()將給定的字符串中所有單詞的首字母大寫,其他全部小寫

capitalize()將給定的字符串中首字母大寫,其他小寫

這兩個函數主要用於文稿改寫等方面

代碼測試如下:

import string
s="abcde,qweRTY"
t="abcde qweRTY"
#以,隔開的單詞
print(s.title())
print(s.capitalize())
#以空格隔開的單詞
print(t.title())
print(t.capitalize())

結果如下所示

 

很明顯 title函數結果為1,3行只有第一個單詞中A,和第二個單詞中的Q大寫 其他全部小寫

至於capitalize()對應的2,4行只有第一個字母會大寫

第三種大小寫反轉swapcase()

swapcase()的功能便是將原字符串中的大寫改為小寫,小寫再改為大寫

我們以"qweASDrtZX"為例子

結果應該為:QWEasdRTzx

由於使用較少所以不予過多介紹

2.is判斷函數

 is判斷函數為一種判斷函數,根據規定字符串判斷是否符合結果返回True或者False

主要判斷如下:

isdecimal():判斷給定字符串是否全為數字

isalpha():判斷給定的字符串是否全為字母

isalnum():判斷給定的字符串是否只含有數字與字母

isupper():判斷給定的字符串是否全為大寫

islower():判斷給定的字符串是否全為小寫

istitle():判斷給定的字符串是否符合title()

isspace():判斷給定的字符串是否為空白符(空格、換行、制表符)

isprintable():判斷給定的字符串是否為可打印字符(只有空格可以,換行、制表符都不可以)

isidentifier():判斷給定的字符串是否符合命名規則(只能是字母或下划線開頭、不能包含除數字、字母和下划線以外的任意字符。)

import string 
# 1234 全是數字 為True
print("1234".isdecimal())
# asdf4 中4是數字不是字母 為False
print("asdf4".isdigit())
# qwe12@ 中@既不是數字 也不是字母為False
print("qwe12@".isalnum())
# asdf全是小寫 為True
print("asdf".islower())
# ADS全是大寫 為True
print("ADS".isupper())
# Wshd,qwe中 雖然W大寫 但是第二個單詞qwe中q小寫 不符合title()所以為False
print("Wshd,qwe".istitle())
# \n為換行 是空白符 為True
print("\n".isspace())
# \t為制表符 不可打印 為False
print("\t".isprintable())
# qe123 符合命名規則 為True
print("qe125".isidentifier())

 

判斷結果如下:

 

 

 3.字符串填充

談起來填充,相比大家都不會陌生。填充操作雖然有些少見,但有時候也能發揮極大作用。

填充操作是將限定長度的字符串,用給定的字符擴充至一定長度。所以最重要的有兩個元素。

第一是擴充的長短,也就是width,當字符串比width小時才會擴充,當字符串大於長度時,自然是返回字符串 本身。

第二便是擴充的位置,分三類:源字符串居左,居右和居中。

居中為center(width),這時候原來的字符串將會在中間,擴充物出現在兩邊。

居左為ljust(width),l為lef的縮寫,源字符串在左邊,填充物出現在字符串的右邊。

居右為rjust(width),  r為right的縮寫,源字符串在右邊,填充物出現在字符串的左邊。

有一點需要注意的是,填充物fillchar是可選的,其默認為空格,可以更改為任意字符。

以字符串“qwer”居左填充為長度10的字符串,填充物為“+”為例,代碼應該如下:

import string 
print("qwer".ljust(10,"+"))

 

代碼結果:

 

這里單獨介紹函數zfill(width),為何着重介紹zfill函數呢?

一方面 zfill(width)函數只需要傳入參數width即可,填充物為“0”,采用居右填充的方式

另外一方面該函數會識別字符串的正負,若為“+”或者“-”則不變,越過繼續填充

例子如下:

import string 
# 不加"+""-"純數字,用填充物"0"將字符串前填充滿
print("12345".zfill(10))
# 加"-"純數字,越過"-"用填充物"0"將字符串前填充滿
print("-125".zfill(10))
# 加"+"數字字母組合,越過"+"用填充物"0"將字符串前填充滿
print("+qwe125".zfill(10))
# 加其他符號,用填充物"0"將字符串前填充滿
print("#qwe12".zfill(10))

 

結果如下所示:

 

 4.子字符串搜索

1.子字符串位置搜索count(sub[, start[, end]])

主要對指定字符串搜索是否具有給定的子字符串sub,若具有則返回出現次數。

strat與end代表搜索邊界,若無寫則代表全字符串搜索

以下為例子:

import string 
# 全部字符串內 搜索qwe 出現的次數
print("qwertasdqwezxcqwe".count("qwe"))
# 由於字符串從0開始計數,1為字符串第二個,相當於從w開始
print("qwertasdqwezxcqwe".count("qwe",1))
# 從字符串第 2個開始到第15個截止,共出現qwe的次數
print("qwertasdqwezxcqwe".count("qwe",1,14))

 

運行結果統計如下:

 

 2.字符串開始與結尾判斷
startswith(prefix[, start[, end]])

endswith(suffix[, start[, end]])

兩個函數作用相同,判斷函數的開始,或者末尾的字符串是否為指定字符串

與之前的搜索相同,可以給字符串加邊界,若無則為全字符串搜索

兩個函數都屬於判斷函數,返回結果為True與False

強調:這里的不僅可以輸入子字符串,還可以輸入元組,若為元組時候只要有一個成真即為True

以下面為例子:

import string 
# 搜索開頭位置為qwe 符合條件,為True 
print("qwertasdqwezxcqwe".startswith("qwe"))
# 開頭位置為字符串下標為1開始,也就是說開頭為wer與qwe不同為False
print("qwertasdqwezxcqwe".startswith("qwe",1))
# 結尾位置為qwe符合條件 為True
print("qwertasdqwezxcqwe".endswith("qwe","asd"))

 

運行結果為下:

 

 3.字符串位置鎖定find與index函數

find(sub[, start[, end]]) 返回第一個子字符串的位置信息,若無則為-1
rfind(sub[, start[, end]])返回最右邊的第一個子字符串的位置信息,若無則為-1
index(sub[, start[, end]]) 返回第一個子字符串的位置信息,若無則為報錯
rindex(sub[, start[, end]])返回最右邊的第一個子字符串的位置信息,若無則報錯

從傳參可以看出,查詢位置函數也可以限定邊界,使用方法同上函數

import string 
s="qweraqwesfgzqweop"
print(s.find("qwe"))
print(s.rfind("qwe"))
print(s.index("qwe"))
print(s.rindex("qwe"))

 

結果如下:

 

 這里需要注意:

以上情況均為找到對應子字符串,若未找到

運行結果:find返回-1  index報錯,情況如下

 

 5.字符串替換

replace(old, new[, count]):將搜索到的字符串改為新字符串

作為替代函數,舊的字符串與新的字符串是必須輸入的

count是可選擇輸入的參數,代表更改個數。

import string 
s="qweraqwesfgzqweop"
# 將字符串全部的qwe  換為asd
print(s.replace("qwe","asd"))
# 將字符串前兩個qwe  換為asd
print(s.replace("qwe","asd",2))
# 將字符串全部的qew  換為asd 沒有則輸出原字符串
print(s.replace("qew","asd"))

 

expandtabs(N)將\t 改為一定數量的空格

空格計算方式:N-(之前字符串長度)=空格數

若N-(之前字符串長度)=0 則空格數為N

若N-(之前字符串長度)<0 則空格數為1

import string 
t="qwe\tqwer\tqasdsdf\tas"
print(t.expandtabs(4))

 

第一個\t :設定長度為4,之前字符串qwe長度為3,4-3=1 替換1個空格

第二個\t :設定長度為4,之前字符串qwer長度為4,4-4=0 替換4個空格

第三個\t :設定長度為4,之前字符串qsdfsdf長度為7,4-7=-3<0 替換1個空格

所以結果如下所示:

 6.字符串分割

字符串分割常用函數為partition()rpartition()

partition(sep)對給定字符串進行切割,切割成三部分

首先搜索到字符串sep,將sep之前的部分為一部分,sep本身作為一部分,剩下作為一部分

partition()與rpartition()之間十分相似,主要不同體現在當字符串中沒有指定sep時

partition()分為三部分,字符串、空白、空白

rpartition()分為三部分,空白、空白、字符串

 

 

 代碼如下:

import string 
t="qwertyuasdfghjkl"
print(t.partition("yua"))
print(t.partition("asqw"))
print(t.rpartition("asqw"))

運行結果:

('qwert', 'yua', 'sdfghjkl')
('qwertyuasdfghjkl', '', '')
('', '', 'qwertyuasdfghjkl')

另一種常見的函數為split(sep=None, maxsplit=-1)rsplit(sep=None, maxsplit=-1)
split()函數傳參兩種

sep為切割,默認為空格

maxsplit為切割次數,給值-1或者none,將會從左到右每一個sep切割一次

rsplit()相同,但是其遍歷方式從右到左

最常見在輸入與input連用,如下:

import string 
t=input().split()
print(t)

 

 7.字符串添加join()

 將可迭代數據用字符串連接起來 ,首先理解什么是可迭代數據,簡單理解就是字符串string、列表list、元組tuple、字典dict、集合set。

而且每個參與迭代的元素必須是字符串類型,不能包含數字或其他類型。

以下代碼為例子:

import string 
#字符串類型
a="qwer"
print("_".join(a))

#元組類型
b=("a","b","c","d")
print("=".join(b))

#集合類型
c={"qwe","asd","zxc"}
print(" ".join(c))

 

 首先第一個例子為字符串類型,所以每一個字符之間都用之前的字符串來交叉

同理元組也是,元與元之間都要加入字符串“=”

集合也是這樣,但是需要注意,集合的無需性,所以順序可能顛倒

以上代碼結果如下:

 

 

由於參與迭代的每個元素必須是字符串類型,不能包含數字或其他類型。

所以L1=(1,2,3)或者L2=('AB',{'a','cd'})是會報錯的

8.字符串修剪

strip([chars])  lstrip([chars])  rstrip([chars])

strip()是為移除指定字符串char,如果沒傳入參數則為移除空格、制表符、換行符

lstrip()中 l為left縮寫,函數表示從左到右遍歷

rstrip()中 r為right縮寫,函數表示從右邊開始遍歷

注意移除為到非char截止,舉例子如下:

import string 
a="    qweasdzxcrtqwe    "
print(a.strip())

b="qweasdzxcrtqwe    "
print(b.lstrip('q'))

c="   qweasdzxcrtqwe"
print(c.rstrip('qew'))

 

a為制表符加字符串,由於strip()未傳入參數,所以刪除空白

b使用lstrip()傳入參數q,字符串從左開始第一個為q,是傳入參數移除,第二個w不是傳入參數,修剪停止,將剩下所有輸出

c使用rstrip()傳入參數qew,字符串從右開始,第一個為q在傳入參數中,同理第二個、第三個也在,所以移除,第四為t不在傳入參數中,將剩下所有輸出

輸出結果如下:

 

最后string的官方文檔為官方文檔

覺得不錯的還望各位大佬點贊分享

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM