您好,登錄后才能下訂單哦!
本文實例講述了Python數據類型之String字符串。分享給大家供大家參考,具體如下:
String(字符串)
1、概述
字符串是以單引號或雙引號括起來的任意文本,比如"abc",‘xy'等等,請注意‘'或者""本身只是一種表示方式,并不是字符串的一部分。
a.若字符串內部包含單引號又包含雙引號怎么辦?
print('I\'m \"ok\"')
表示的字符串內容是:
I'm "ok"
注意:轉義字符\可以轉義很多字符,比如\n表示換行,\t表示制表符,字符\本身也需要轉義,所以\\表示的字符就是\等等
>>>print('I\'m ok.') I'm ok. >>>print('I\'m learning\n python.') I'm leanring Python. >>> print('\\\n\\') \ \
但是,如果字符串里面很多字符串需要轉義,就需要添加很多,為了簡化,python還允許用r""(或者R"")表示內部的字符串默認不轉義。
>>> print('\\\t\\') \ \ >>>print(r'\\\t\\') \\\t\\
如果字符串內部很多換行,用\n寫在一行里不好閱讀,為了簡化,python允許用"'…"'的格式表示多行內容:
>>> print('''line1 line2 line3''') line1 line2 line3
2.創建字符串
str1 = "hello world" str2 = 'you are good'
3.字符串運算
3.1字符串連接
3.1.1 使用加號進行連接
#字符串的連接,通過"+"進行連接 s1 = 'welcome ' s2 = 'to guangzhou' print(s1 + s2)
輸出:
welcome to guangzhou
注意:字符串 + 數字,這樣會報錯,不同類型的不能相加
3.1.2 使用","進行連接【tuple類型】
s1 = 'hello' s2 = 'world' print(s1, s2) #使用","連接的時候,在","的位置會產生一個空格
輸出:
hello world
3.1.3 使用%格式化連接
s1 = 'hello' s2 = 'world' print("%s %s"%(s1, s2))
輸出:
hello world
3.1.4 使用join函數進行連接
s1 = ['hello', 'world'] print("".join(s1)) print("*".join(s1))
輸出:
helloworld
hello*world
注意:"".join()函數只需要傳遞一個參數【字符串、列表、元組、字典(輸出無序)、集合(輸出無序),其中的元素應該是字符串類型】。
3.2 重復輸出字符串
#重復輸出字符串,通過乘法的方式實現 s3 = 'good' print(s3 * 3)
輸出:
goodgoodgood
3.3 獲取字符串中的字符
#通過索引的方式實現 #索引:給一個字符串中的字符從0開始編號,也稱為下標 #索引的取值范圍:[0,len(str)-1] #訪問方式: 變量名稱[索引] str3 = 'good' print(str3[0]) #索引值還可以從-1開始,-1代表倒數第一個字符 print(str3[-1])
輸出:
g
d
3.3 截取字符串
# 通過下標截取字符串 str1 = "hello world" print(str1[3:6]) #注意:截取字符串的范圍是str[start : end] 它是一個前閉后開的區間[start,end) #如果n的值超過了字符串的最大長度,則仍然截取原下標的長度 #從開頭截取到指定索引之前[0,5) print(str1[:5]) #從指定截取到結尾[4,len(str1)) print(str1[4:]) #注意在使用str[start : end]來截取字符串的時候,若start不寫默認從第一個字符開始 #若end不寫,則默認到最后一個字符結束。取頭去尾。 print("012345"[1:-1])
輸出:
lo
hello
o world
1234
3.5 判斷是否包含指定字符
#判斷字符串中是否包含某指定字符串 str4 = "you are a good boy" print("good" in str4) #若包含有則返回True否則為False
輸出:
True
3.6 格式化輸出
#通過%來改變后面的字母或者是符號的含義,%被稱為占位符 # %s:格式化字符串 # %d:格式化整數 # %f:格式化浮點數,可指定小數點后的精度 age = 18 name = "麗麗" weight = 45.5 print("my name is %s , I am %d year old and my weight is %.2f kg"%(name, age, weight)) #注意:%.nf表示精確到小數點后n位,會四舍五入
輸出:
my name is 麗麗 , I am 18 year old and my weight is 45.50 kg
4.關于字符串常用函數
4.1 eval(str)
功能:將字符串str當成有效的表達式來求值并返回計算結果。
可以把list,tuple,dict和string相互轉化
>>>num1 = eval('123') >>>print(num1) 123 >>>num2 = eval("[1, 2, 3]") >>>print(num2) [1, 2, 3] >>> num3 = eval("12-3") >>> print(num3) 9
4.2 len(str)
功能:返回當前字符串的長度(字符的個數)
>>> len("you are good") 12
4.3 str.lower()
功能:返回一個把字符串中的大寫字母轉換為小寫字母 的字符串
>>> str = "Hello World" >>> print(str.lower()) hello world
注意:此方法不改變原本的字符
4.4 str.upper()
功能:返回一個把字符串中的小寫字母轉換為大寫字母的字符串
>>> str = "Hello World" >>> print(str.upper()) HELLO WORLD
4.5 str.swapcase()
功能:返回一個把字符串中的大寫字母轉為小寫字母,小寫字母轉換為大寫字母的字符串
>>> str = "Hello World" >>> print(str.swapcase()) hELLO wORLD
4.6 str.capitalize()
返回一個首字母大寫,其他小寫的字符串
>>> str = "Hello World" >>> print(str.capitalize()) Hello world
4.7 str.title()
返回一個每個單詞首字母大寫的字符串
>>> str = "Hello World" >>> print(str.title()) Hello World
4.8 str.center(width[, fillchar])
功能:返回一個指定寬度的居中字符串,fillchar為填充的字符串,默認使用空格
>>> str = "Hello World" >>> print(str.center(50,"*")) *******************Hello World********************
4.9 str.ljust(width[, fillchar])
功能:返回一個指定寬度的左對齊字符串,fillchar為填充字符。默認使用空格填充
>>> str = "Hello World" >>> print(str.ljust(50,"*")) Hello World***************************************
4.10 str.rjust(width[, fillchar])
功能:返回一個指定寬度右對齊字符串,fillchar為填充字符,默認使用空格填充
>>> str = "Hello World" >>> print(str.rjust(50,"*")) ***************************************Hello World
4.11 str.zfill(width)
功能:返回一個長度為width字符串,原字符串右對齊,前面補0
>>> str = "Hello World" >>> print(str.zfill(50)) 000000000000000000000000000000000000000Hello World
4.12 str.count(str [,start][, end])
功能:返回字符串中str出現的次數,可以指定一個范圍,若不指定則默認從頭到尾,匹配的時候是區分大小寫的。
>>> str = "Hello World" >>> print(str.count("hello", 0 , 10)) 0
4.13 str.find(str1[, start][, end])
功能:從左到右檢測str1字符串是否包含在字符串中,可以指定范圍,默認從頭到尾。
返回的是第一次出現的開始的下標,若未查詢到,則返回-1
>>> str = "Hello World" >>> str1 = "llo" >>> print(str.find(str1, 0 , 10)) 2
4.14 str.rfind(str1[, start][, end])
功能:類似于str.find()
,不過是從右邊開始查找
>>> str = "Hello World" >>> str1 = "llo" >>> print(str.rfind(str1, 0 , 10)) 2
4.15 str.index(str1[, start = 0] ,[ end = len(str)])
功能:類似于find()
,與find()
不同的是,如果str1不存在的時候會報一個異常
>>> str2 = "Hello World" >>> str1 = "hello" >>> print(str2.index(str1, 0 , 10)) ValueError: substring not found
4.16 str.lstrip()
功能:截掉字符串左側指定的字符串,默認為空格
>>> str = '**** you are very good' >>> print(str.lstrip()) >>> print(str.lstrip()) **** you are very good >>> print(str.lstrip("*")) you are very good
4.17 str.rstrip()
功能:截掉字符串右側指定的字符串,默認為空格
>>> str = '**** you are good****' >>> print(str.rstrip()) **** you are good**** >>> print(str.rstrip("*")) **** you are good
str1 = "*nih*a*o*" print(str1.strip('*'))
輸出:
nih*a*o
4.18 string.split(str="", num=string.count(str))
功能:以 str 為分隔符切片 string,如果 num有指定值,則僅分隔 num 個子字符串
str – 分隔符,默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等。 num – 分割次數
>>> str1 = "hello you are good" >>> str1.split() ['hello', 'you', 'are', 'good'] >>> str1.split(" ",2) ['hello', 'you', 'are good ']
4.19 str1.splitlines([keepends])
功能:字符串會按照行(‘\r','\r\n','\n')進行分割,返回一個包含各行作為元素的列表,如果參數keepends的值為False,不包含換行符,如果為True,則保留換行符。參數keepends默認為False。
str2 = '''how are you ? i am fine ! ''' list2 = str2.splitlines() print(list2)
輸出:
['how are', 'you ?', 'i am', 'fine', '!']
str2 = '''how are you ? i am fine ! ''' list2 = str2.splitlines(keepends=True) print(list2)
輸出:
['how are\n', 'you ?\n', 'i am\n', 'fine\n', '!\n']
4.20 str1.join(seq)
功能:以指定字符串作為分隔符,將seq中的所有元素合并成為一個新的字符串。
list2 = ['you', 'are', 'very', 'great', '!'] str3 = ' '.join(list2) print(str3)
輸出:
you are very great !
str1 = "how are you , i am fine thank you" str3 = "*".join(str1) print(str3)
輸出:
h*o*w* *a*r*e* *y*o*u* *,* *i* *a*m* *f*i*n*e* *t*h*a*n*k* *y*o*u
注意:如果連接的是字符串,則它會把字符串中的每個字符使用指定字符連接。
4.21 獲取最大最小字符
max(str)
:功能: 返回字符串str中最大的字母
str1 = "how are you , i am fine thank you" print(max(str1))
輸出:
y
min(str)
:功能:返回字符串str中最小字母
str1 = "how are you , i am fine thank you" print(min(str1))
輸出:
' '
注意:比較的是ASCII碼值
4.22字符串的替換
str.replace(old , new [, count])
功能:將字符串中的old替換成new,若不指定count,則默認全部替換,若指定count,則替換前count個
str1 = "how are you , i am fine thank you" str2 = str1.replace("you" ,'me') print(str2)
輸出:
how are me , i am fine thank me
4.23字符串的映射替換
dic = str.maketrans(oldstr, newstr)
str2.translate(dic)
參數一:要轉換的字符 參數二:目標字符
str5 = "" dic = str5.maketrans("ac", "21") # a--2 c--1 str7 = "how are you ,u ewe c " print(str7.translate(dic))
輸出:
how 2re you ,u ewe 1
注意:很少用。
4.24 判斷字符串的開頭結尾
str.startswith(str1, start=0, end=len(str))
功能:在給定的范圍內判斷字符串是否以給定的字符串開頭,如果沒有指定范圍,默認整個字符串。
str1 = "aaa bbb ccc deee" print(str1.startswith("aa")) str1 = "aaa bbb ccc deee" print(str1.startswith("aa", 3, 9))
輸出:
True
False
str.endswith(str, start=0, end=len(str))
功能:在給定的范圍內判斷字符串是否以指定的字符串結尾,若沒有指定范圍,默認為整個字符串。
str1 = "aaa bbb ccc deee" print(str1.endswith("deee")) str1 = "aaa bbb ccc deee" print(str1.endswith("e", 3 ,9))
輸出:
True
False
4.25 編碼與解碼
str.encode(encoding="utf-8", errors="scrict")
功能:字符串的編碼,若不指定encoding則默認選擇utf-8。
str1 = "你好嗎?" data = str1.encode() print(data) print(type(data))
輸出:
b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x90\x97\xef\xbc\x9f'
<class 'bytes'>
str.decode(encoding="utf-8")
"hello".encode("utf-8").decode()
功能:對字符進行解碼,若不指定編碼格式,則默認選擇utf-8
str1 = "你好嗎?" data = str1.encode() print(data) print(type(data)) data2 = data.decode() print(data2) print(type(data2))
輸出:
b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x90\x97\xef\xbc\x9f'
<class 'bytes'>
你好嗎?
<class 'str'>
注意:解碼時的編碼格式要與編碼時的保持一致
拓展:errors = ignore 的時候,忽略錯誤
4.26 判斷是否為字母或數字
str.isalpha()
功能:判斷字符串至少有一個字符,并且所有的字符都是字母(或者包含漢字),若為真則返回True,否則返回False
str8 = "hello ni hao " print(str8.isalpha()) str9 = "你好" print(str9.isalpha())
輸出:
False
True
str.isalnum()
功能:判斷一個字符串至少有一個字符,并且所有的字符都是字母或數字(或者包含漢字)則返回True否則返回False
str9 = '1234你好' str10 = "sc22xdcd" str11 = "ss1 2dd" print(str9.isalnum()) print(str10.isalpha()) print(str11.isalnum())
輸出:
True
True
False
4.27 判斷大小寫
str.isupper()
功能:若字符串中包含至少一個字母的字符,并且這些字母都是大寫,則返回True,否則返回False
str10 = "AA2221 你111" print(str10.isupper()) str10 = "AAaaa" print(str10.isupper())
輸出:
True
False
str.islower()
功能:若字符串中包含至少一個字母的字符,并且這所有的字母都是小寫,則返回True,否則返回False。
str10 = "aa2221 你111" print(str10.islower())
輸出:
True
4.28 判斷是否包含特殊字符
①、str.istitle()
功能:如果一個字符串是標題化的則返回True,否則返回False
【標題化】每個首字母大寫。
str1 = "Hello World" print(str1.istitle())
輸出:
True
②、str.isdigit()
功能:判斷字符是否全為數字。
isdigit()
True: Unicode數字,byte數字(單字節),全角數字(雙字節)
False: 漢字數字, ,羅馬數字
Error: 無
print("123".isdigit()) print("123a".isdigit())
輸出:
True
Fals
③、str.isnumeric()
功能:若字符串中只包含數字字符,則返回True,否則返回False。
isnumeric()
True: Unicode數字,全角數字(雙字節),漢字數字
False: 羅馬數字,
Error: byte數字(單字節)
print("123一".isnumeric()) print("123a".isnumeric())
輸出:
True
False
④、str.isdecimal()
功能:檢查字符串是否只包含十進制字符【0,9】,如果是返回True,否則返回False。
isdecimal()
True: Unicode數字,,全角數字(雙字節),
False: 羅馬數字,漢字數字
Error: byte數字(單字節)
print("123".isdecimal()) print("123z".isdecimal())
輸出:
True
False
⑤、str.isspace()
功能:如果字符串只包含空格,則返回True,否則返回False。
print(" ".isspace()) print("\t".isspace()) print("\n".isspace()) print("\r".isspace()) print(" qq".isspace())
輸出:
True
True
True
True
False
4.29 ASCII碼轉換
①、ord(str)
功能:獲取字符串的整數表示 ASCII碼值。
print(ord("A")) print(ord("你"))
輸出:
65
20320
②、chr(str)
功能:把編碼轉成對應的字符。
print(chr(68)) print(chr(20190))
輸出:
D
仞
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python字符串操作技巧匯總》、《Python數據結構與算法教程》、《Python列表(list)操作技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。