python從0到1 5 字串

2022-07-12 01:33:09 字數 4662 閱讀 5082

1.字串到拼接

前面已經說過了,這也是python中一大特色就是可以直接「+」進行。

例如

a = 'i am chinese'b = '我是中國人'

print(a+b)

只需注意拼接只能是字串拼接,如果有其他型別的資料,要用到強制轉換成字串就可以了。

2.計算字串長度

通過len()函式實現。例如:

str = "人生苦短,我用python!"length =len(str)

print(length)

思考:輸出結果是多少?

在python中,數字,英文,小數點,下劃線和空格佔乙個位元組;漢字可能會佔到2-4個位元組。佔幾個位元組取決採用的編碼。漢字在gbk/gb2312編碼中佔2個字元,在utf-8/unicode中佔3個位元組(或者4個位元組)。python預設的utf-8,即乙個漢字是3個位元組。

但是為什麼上面輸出結果是「14」呢?這是因為在預設情況下len函式計算字串長度是,不區分英文,數字,和漢字,所有字元都是乙個位元組。

str = "人生苦短,我用python!"length = len(str.encode())     #計算utf-8編碼的字串長度

print(length)

如果是gbk編碼

str = "人生苦短,我用python!"length = len(str.encode('gbk'))     #計算gbk編碼的字串長度

print(length)

3擷取字串其實字串也屬於序列,所以也可用切片的方式實現;語法格式如下:

string[start:end:step]

引數說明如下:

start:表示要擷取的第乙個字元的索引,如不指定預設0

end:表示要擷取的最後乙個字元的索引,如不指定預設字串的長度

step:表示步長,如果省略,預設為1

例如:

str = "人生苦短,我用python!"sua = str[1]

sub = str[5:]

suc = str[:5]

sud = str[2:5]

sue = str[1:10:2]

sua---sue輸出結果應該是?

4. 分割字串

在python中,字串物件提供了分割字串的方法,分割字串是吧字串分割為列表;

通過split()方法可以實現字串分割,語法如下:

str.split(sep,maxsplit)

引數說明:

str:表示要進行分割的字串

sep:用於指定分割符,可以包涵多個字段,預設none,即所有空字元(包括空格/換行/製表符等)

maxsplit:可選引數,用於指定分割的次數,如果不指定或者為-1,則分割次數沒有限制,否則返回結果列表的元素個數最多為maxsplit+1.

說明:split方法中,如果不指定sep引數,那麼也不能指定maxsplit引數。

下面開始說人話,上菜

1 str = "我 要 學 習 語 言  >>> www.woyaoxuexi.com"

2 print("原字串:",str)

3 list1 = str.split() #採用預設分割符進行分割

4 print("用預設分割符進行分割",list1)

5 list2 = str.split(">>>") #採用多個字串(>>>)進行分割

6 print("採用多個字串'>>>'進行分割",list2)

7 list3 = str.split(".") #採用"."進行分割

8 print("採用'.'進行分割",list3)

9 list4 = str.split(" ",4) #採用空格進行分割,並且只分割前4個

10 print("採用空格進行分割,並且只分割前4個",list4)

11 list5 = str.split(">") #採用">"進行分割

12 print("採用'>'進行分割",list5)

執行結果:

原字串: 我 要 學 習 語 言  >>>www.woyaoxuexi.com

用預設分割符進行分割 ['我', '要', '學', '習', '語', '言', '>>>', 'www.woyaoxuexi.com']

採用多個字串'>>>'進行分割 ['我 要 學 習 語 言 ', ' www.woyaoxuexi.com']

採用'.'進行分割 ['我 要 學 習 語 言 >>> www', 'woyaoxuexi', 'com']

採用空格進行分割,並且只分割前4個 ['我', '要', '學', '習', '語 言 >>> www.woyaoxuexi.com']

採用'>'進行分割 ['我 要 學 習 語 言 ', '', '', ' www.woyaoxuexi.com']

說明:split方式,不指定引數,預設採用空白符進行分割,無論有幾個空格都作為乙個。如上第3行;如果指定了空格進行分割,每個空格分割一次。如上11行。

5.檢索字串

在python中,字串物件提供了很多應用於字串查詢的方法:

5.1  count()方法

通俗來說,就是計數,計算出現字元出現的次數。語法如下:

str.count(sub,start[,end])

引數說明:

str:表示原字串

sub:要檢索的子字串

start:可選引數,表示檢索範圍,起始索引。如果不指定,從頭開始

end:可選引數,表示檢索範圍,結束位置的索引。如果不指定,一直檢索到結尾。

例如:

str1 = "

@扎克伯格@羅永浩@雷軍

"print(str1.count("

@"))

5.2find()方法

查詢目標字元是否存在,存在返回首次出現的索引,不存在返回-1。語法如下:

str.find(sub,start[,end])

引數說明:

str:表示原字串

sub:要檢索的子字串

start:可選引數,表示檢索範圍,起始索引。如果不指定,從頭開始

end:可選引數,表示檢索範圍,結束位置的索引。如果不指定,一直檢索到結尾。

例如:

str1 = "

@扎克伯格@羅永浩@雷軍

"print(str1.find("

@"))

如果只是想判斷指定字串是否存在,可以使用in關鍵字實現。存在返回ture,不存在返回false。例如:

str1 = "

@扎克伯格@羅永浩@雷軍

"print('@'

in str1)

5.3index()方法

用法跟find方法類似。只是如果使用index(),當指定當字串不存在是會丟擲異常。

例如:

str1 = "

@扎克伯格@羅永浩@雷軍

"print(str1.index('

#'))

執行結果:

5.4startswith()方法

該方法用於檢索字串是否以指定字串開頭。如果是則返回ture,否則返回false。語法如下:

str.staratswith(prefix[,start[,end]])

引數說明:

str:表示原字串

prefix:要檢索的子字串

start:可選引數,表示檢索範圍,起始索引。如果不指定,從頭開始

end:可選引數,表示檢索範圍,結束位置的索引。如果不指定,一直檢索到結尾。

str1 = "

@扎克伯格@羅永浩@雷軍

"print(str1.startswith("

@",0,5))

5.5endswith()方法該方法用於檢索字串是否以指定字串結尾。用法同stratswith方法。

6.字母大小寫轉換

6.1lower()方法

用於將字串中大寫字母轉換為小寫字母。語法格式:

str.lower()

例如:

str1 = "

www.woyaoxuexi.com

"print(str1.lower())

執行結果:

www.woyaoxuexi.com
6.2upper()方法用於將字串小寫字母轉換為大寫字母。語法格式:

str.upper()

例如:

str1 = "

www.woyaoxuexi.com

"print(str1.upper())

執行結果:

www.woyaoxuexi.com

從0到開始《七》 字串相關及位運算

程式一 編寫函式any s1,s2 將字串s2中的任意字元在字串s1中第一次出現的位置作為結果返回。如果s1中不包含s2中的字元,則返回 1。標準庫函式strpbrk 其標頭檔案是string.h 具有同樣的功能,但它返回的是指向該位置的指標 解法一 o n m 的時間複雜度,這個簡單 int an...

10 3 字串逆序 15

輸入乙個字串,對該字串進行逆序,輸出逆序後的字串。輸入格式 輸入在一行中給出乙個不超過80個字元長度的 以回車結束的非空字串。輸出格式 在一行中輸出逆序後的字串。輸入樣例 hello world 輸出樣例 dlrow olleh include include int main int argc,c...

15 字串匹配問題

description given a text txt 0 n 1 and a pattern pat 0 m 1 write a function search char pat,char txt that prints all occurrences of pat in txt.you may...