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編碼的字串長度如果是gbk編碼print(length)
str = "人生苦短,我用python!"length = len(str.encode('gbk')) #計算gbk編碼的字串長度3擷取字串其實字串也屬於序列,所以也可用切片的方式實現;語法格式如下:print(length)
string[start:end:step]
引數說明如下:
start:表示要擷取的第乙個字元的索引,如不指定預設0
end:表示要擷取的最後乙個字元的索引,如不指定預設字串的長度
step:表示步長,如果省略,預設為1
例如:
str = "人生苦短,我用python!"sua = str[1]sua---sue輸出結果應該是?sub = str[5:]
suc = str[:5]
sud = str[2:5]
sue = str[1:10:2]
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說明:split方式,不指定引數,預設採用空白符進行分割,無論有幾個空格都作為乙個。如上第3行;如果指定了空格進行分割,每個空格分割一次。如上11行。用預設分割符進行分割 ['我', '要', '學', '習', '語', '言', '>>>', 'www.woyaoxuexi.com']
採用多個字串'>>>'進行分割 ['我 要 學 習 語 言 ', ' www.woyaoxuexi.com']
採用'.'進行分割 ['我 要 學 習 語 言 >>> www', 'woyaoxuexi', 'com']
採用空格進行分割,並且只分割前4個 ['我', '要', '學', '習', '語 言 >>> www.woyaoxuexi.com']
採用'>'進行分割 ['我 要 學 習 語 言 ', '', '', ' www.woyaoxuexi.com']
5.檢索字串
在python中,字串物件提供了很多應用於字串查詢的方法:
5.1 count()方法
通俗來說,就是計數,計算出現字元出現的次數。語法如下:
str.count(sub,start[,end])
引數說明:
str:表示原字串
sub:要檢索的子字串
start:可選引數,表示檢索範圍,起始索引。如果不指定,從頭開始
end:可選引數,表示檢索範圍,結束位置的索引。如果不指定,一直檢索到結尾。
例如:
str1 = "5.2find()方法@扎克伯格@羅永浩@雷軍
"print(str1.count("
@"))
查詢目標字元是否存在,存在返回首次出現的索引,不存在返回-1。語法如下:
str.find(sub,start[,end])
引數說明:
str:表示原字串
sub:要檢索的子字串
start:可選引數,表示檢索範圍,起始索引。如果不指定,從頭開始
end:可選引數,表示檢索範圍,結束位置的索引。如果不指定,一直檢索到結尾。
例如:
str1 = "如果只是想判斷指定字串是否存在,可以使用in關鍵字實現。存在返回ture,不存在返回false。例如:@扎克伯格@羅永浩@雷軍
"print(str1.find("
@"))
str1 = "5.3index()方法@扎克伯格@羅永浩@雷軍
"print('@'
in str1)
用法跟find方法類似。只是如果使用index(),當指定當字串不存在是會丟擲異常。
例如:
str1 = "執行結果:@扎克伯格@羅永浩@雷軍
"print(str1.index('
#'))
5.4startswith()方法
該方法用於檢索字串是否以指定字串開頭。如果是則返回ture,否則返回false。語法如下:
str.staratswith(prefix[,start[,end]])
引數說明:
str:表示原字串
prefix:要檢索的子字串
start:可選引數,表示檢索範圍,起始索引。如果不指定,從頭開始
end:可選引數,表示檢索範圍,結束位置的索引。如果不指定,一直檢索到結尾。
str1 = "5.5endswith()方法該方法用於檢索字串是否以指定字串結尾。用法同stratswith方法。@扎克伯格@羅永浩@雷軍
"print(str1.startswith("
@",0,5))
6.字母大小寫轉換
6.1lower()方法
用於將字串中大寫字母轉換為小寫字母。語法格式:
str.lower()
例如:
str1 = "執行結果:www.woyaoxuexi.com
"print(str1.lower())
www.woyaoxuexi.com6.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...