字元串聲明
雙引号,單引号,三單引号,三雙引号
裡面有雙引号,外面使用單引号
裡面有單引号,外面使用雙引号
或者使用轉義字元
#字元串
m='hello'
n="hello"
#裡面有雙引号,外面使用單引号
a='"hello"'
#裡面有單引号,外面使用雙引号
b="I'm dq"
c='''hello'''
d="""hello"""
i='''I say:"ok"'''
j="""I'dq"""
print(a,b,c,d,i,j,sep='\n')
注意:不能字元串+數字,會報錯,必須兩者都是字元串
#報錯TypeError: can only concatenate str (not "int") to str
print("3243"+3)
print("3243" + 3+"2343")
規定:
兩個字元串類型的資料使用加法運算符,用來拼接兩個字元串。在Python裡數字和字元串不能做加法運算。
數字和字元串之間使用乘法運算符,用于将字元串重複多次。
字元串之間使用比較運算符,會根據各個字元的編碼值逐一進行比較。
數字和字元串之間,做 == 運算的結果是 False,做 != 運算的結果是 True,其它的比較運算均不支援,否則會報錯。
轉義字元
\n換行
\t水準制表符
\斜杠
\r是回車,光标到行首
\v:垂直制表
如:
aaaa水準
a
a
a
a垂直
tab預設四個空格
#字元串2-轉義字元
m='he\'ll\'o'
n="he\"ll\"o"
print(m,n,sep='\n')
字元串下标
1.字元串下标
0–n-1
-n-(-1)
2.字元串一旦定義不能發生變化
x=‘89’
x[0]=‘3’(錯誤)
x=‘2345’(指向一個新的字元串)
3.字元串切片
字元串名稱[start :end :step]
step預設為1,從左往右取
如果隻設定start,會“截取”到最後。
如果隻設定end,會從頭開始“截取”到end前一個字元。
這三個都可以預設,即取出所有的
正向:
#字元串3-切片1
x='1234567'
#[start:end)從0開始-12
print(x[0:2:1],sep='\n')
#[start:end)從0開始-1234567
print(x[0:7:1],sep='\n')
#全部預設,取出所有的-1234567
print(x[::],sep='\n')
#取出[1,3)--123
print(x[:3:],sep='\n')
#隔2個取--1357
print(x[0::2],sep='\n')
逆向:
step=-1從右往左取
#字元串3-切片2
x='1234567'
#(-n)--(-1):這裡-7--(-1)
#step=1從左向右--34
print(x[-5:-3:1],sep='\n')
#step=-1從右到左,7654
print(x[-1:-5:-1],sep='\n')
#從第-2到第-5,從右往左,每隔兩個字元做1次切片,輸出64
print(x[-2:-5:-2])
##從右往左每隔3個字元做1次切片,輸出741
print(x[::-3],sep='\n')
字元串常見函數
擷取字元串長度-len()函數
查找内容-find()函數
描述:查找字元串中指定的子字元串sub第一次出現的位置,可以規定字元串的索引查找範圍。若無則傳回 -1。
文法:str.find(sub,start,end) -> int 傳回整數
sum —要索引的子字元串。
start —索引的起始位置。預設值為0。
end —索引的結束位置。預設值為字元串長度len(str)。
[start,end) 不包括end。
#字元串函數-find
x='i love python'
#文法:字元串名稱。find(子字元串,開始位置,結束位置)
#傳回字元子串python第一次出現的位置(下标,從0開始)
print(x.find('python',0,len(x)),end='\n')
#沒有查找到就傳回-1
print(x.find('python',0,6),end='\n')
查找内容-rfind()函數
描述:查找字元串中指定的子字元串sub最後一次出現的位置,可以規定字元串的索引查找範圍。若無則傳回 -1。
文法:str.rfind(sub,start,end) -> int 傳回整數
sum —要索引的子字元串。
start —索引的起始位置。預設值為0。
end —索引的結束位置。預設值為字元串長度len(str)。
[start,end) 不包括end。
注:rfind()函數用法與find()函數相似,rfind()函數傳回指定子字元串最後一次出現的位置,find()函數傳回指定子字元串第一次出現的位置。
#字元串函數-rfind
x='ip lovnep python'
#文法:字元串名稱。find(子字元串,開始位置,結束位置)
#傳回字元子串python最後一次出現的位置(下标,從0開始)--n
print(x.rfind('n',0,len(x)),end='\n')
#查的是第一個字元:p--10
print(x.rfind("python"))
#沒有查找到就傳回-1
print(x.rfind('python',0,6),end='\n')
查找内容-index()函數
描述:查找字元串中第一次出現的子字元串的位置,可以規定字元串的索引查找範圍[star,end)。若無則會報錯。
文法:str.index(sub, start, end) -> int 傳回整數
sub —— 查找的子字元串。
start —— 索引的起始位置,預設為0。
end —— 索引的結束位置,預設為字元串的長度。
[star,end)
# 字元串函數-index
str = "i love python"
# 與find用法一緻
print(str.index("p", 4, 12))
# 若無則會報錯-ValueError: substring not found
print(str.index("k", 4, 12))
print(str.index("i"))
查找内容-rindex()函數
描述:查找字元串中最後一次出現的子字元串的位置,可以規定字元串的索引查找範圍[star,end),若無則會報錯。
文法:str.rindex(sub, start, end) -> int 傳回整數。
sub —— 查找的子字元串。
start —— 索引的起始位置,預設為0。
end —— 索引的結束位置,預設為字元串的長度。
[star,end)
#字元串函數-rindex
str = "i love python python"
#傳回字元子串p後一次出現的位置(下标,從0開始)
print(str.rindex("p"))
#傳回字元子串o後一次出現的位置(下标,從0開始)
print(str.rindex("o",0,len(str)))
# 若無則會報錯-ValueError: substring not found
print(str.rindex("x"))
判斷-endswith()函數
描述:判斷字元串是否以指定字元或子字元串結尾。
文法:str.endswith(“suffix”, start, end) 或
str[start,end].endswith(“suffix”) 用于判斷字元串中某段字元串是否以指定字元或子字元串結尾。
—> bool 傳回值為布爾類型(True,False)
suffix — 字尾,可以是單個字元,也可以是字元串,還可以是元組("suffix"中的引号要省略)。
start —索引字元串的起始位置。
end — 索引字元串的結束位置。
str.endswith(suffix) star預設為0,end預設為字元串的長度減一(len(str)-1)。
注意:空字元的情況。傳回值通常也為True
#字元串函數-endswith
#查找字元串是否以字元結尾,是傳回True,不是傳回False
str = "i love python"
#True
print(str.endswith("n"))
#False
print(str.endswith("n",0,6))
#True
print(str.endswith("python"))
#True
print(str.endswith("python",0,len(str)))
#True-空字元串
print(str.endswith(""))
判斷-startswith()函數
描述:判斷字元串是否以指定字元或子字元串開頭。
用法與endswitch一緻
#字元串函數-startswith
#查找字元串是否以字元開頭,是傳回True,不是傳回False
str = "ilove python"
#True
print(str.startswith("i"))
#True
print(str.startswith("i",0,6))
#True
print(str.startswith("ilove"))
#False
print(str.startswith("python",0,len(str)))
#True-空字元串
print(str.startswith(""))
判斷-isalpha()函數
isalpha()的作用是檢查一個字元串中所有的字元是否都是由字母構成的,并且至少有1個字元。
string_name.isalpha()
該函數沒有參數。
string_name是要判斷的字元串或字元串變量。
如果字元串中除了字母和中文外,不包括任何其它字元(數字,符号等)且不是空字元串,則傳回True,否則傳回False.
示例:
判斷- isdigit() 函數
isdigit()方法檢測字元串是否隻由數字組成。
如果字元串隻包含數字則傳回 True 否則傳回 False。
str = "123456" #True
print (str.isdigit())
str = "this is string example....wow!!!"#False
print (str.isdigit())
str = "thisd22is string example....wow!!!"#False
print (str.isdigit())
str = "可靠 11"#False
print (str.isdigit())
判斷-isalnum()函數
檢查一個字元串是否是由某門語言的有效字元或數字構成。
1)該函數檢查字元串是否由字母[a-z,A-Z](也包括構成其它語言的字元,如漢字,俄文,日文,韓文)或數字[0-9]及其組合組成的,如果是則傳回True,否則傳回False。
3)組成字元串的字元中有是空字元串,不能有特殊字元,不可列印字元,控制符,标點符号等傳回False。
isalnum使用的例子
1、字元串僅包含字母
str1 = "Python"
print(str1.isalnum())
輸出:True
2、字元串僅包含數字
str1 = "5211314"
print(str1.isalnum())
輸出:True
3、字元串由字母或數字組成
str1 = "HelloPython3"
print(str1.isalnum())
輸出:True
4、字元串由字母和漢字組成
rtn_value = "翔宇亭IT樂園".isalnum()
print(rtn_value)
輸出:True
隻包括漢字和英文字母,是以為True.
5、字元串中包含空格
str1 = "I am a student"
print(str1.isalnum())
輸出:False
6、字元串中包含标點符号
str1 = "Perfect!"
print(str1.isalnum())
輸出:False
7、字元串中包含大小寫的字母
str1 = "GoodBoy123"
print(str1.isalnum())
輸出:True
8、空字元
str1 = ""
print(str1.isalnum())
輸出:False
9、非英文字母
str1 = "Ятебялюблю" #俄語
print(str1.isalnum())
輸出:True
10、包含特殊字元
str1 = "[email protected]"
print(str1.isalnum())
輸出:False
判斷-isspace()函數
isspace()的作用是檢查字元串是否僅包含空白字元(純空白字元”“,’‘,轉義字元\n,\t,\v,\r),如果字元串僅包含空白字元則傳回True,否則傳回False。
示例1:
示例2:
計算-出現次數count()函數
描述:統計字元串裡某個字元出現的次數。可以選擇字元串索引的起始位置和結束位置。
str = "i love python,i am learning python"
print(str.count("i"))
print(str.count("i",2))
print(str.count("i",2,5))
print(str.count("am"))
替換内容-replace()函數
replace() 方法把字元串中的 old(舊字元串) 替換成 new(新字元串),如果指定第三個參數max,則替換不超過 max 次。
str.replace(old, new[, max])
old – 将被替換的子字元串。
new – 新字元串,用于替換old子字元串。
max – 可選字元串, 替換不超過 max 次
傳回字元串中的 old(舊字元串) 替換成 new(新字元串)後生成的新字元串,如果指定第三個參數max,則替換不超過 max 次。
執行個體
str = "this is string example....wow!!! this is really string"
print (str.replace("is", "was"))
print (str.replace("is", "was", 3))
輸出:
thwas was string example…wow!!! thwas was really string
thwas was string example…wow!!! thwas is really string
切割字元串-partition()函數:
描述:根據指定的分隔符(sep)将字元串進行分割。從字元串左邊開始索引分隔符sep,索引到則停止索引。
文法:str.partition(sep) -> (head, sep, tail) 傳回一個三元元組,head:分隔符sep前的字元串,sep:分隔符本身,tail:分隔符sep後的字元串。
#字元串-partition
#partition('分隔符')指定的分隔符(sep)将字元串進行分割
#遇到第一個分隔符就停止
#有:傳回(分隔符左邊,分隔符,分隔符右邊)
#無:傳回(整個字元串,分隔符)
str = "https://www.baidu.com/"
print(str.partition("://"))
print(str.partition(","))
print(str.partition("."))
print(type(str.partition("://")))
# 輸出:
# ('https', '://', 'www.baidu.com/')
# ('https://www.baidu.com/', '', '')
# ('https://www', '.', 'baidu.com/')
# <class 'tuple'>
切割字元串-rpartition()函數
描述:根據指定的分隔符(sep)将字元串進行分割。從字元串右邊(末尾)開始索引分隔符sep,索引到則停止索引。
文法:str.rpartition(sep) -> (head, sep, tail) 傳回一個三元元組,head:分隔符sep前的字元串,sep:分隔符本身,tail:分隔符sep後的字元串。
#字元串-rpartition
#rpartition('分隔符')指定的分隔符(sep)将字元串進行分割--從右往左
#遇到第一個分隔符就停止
#有:傳回(分隔符左邊,分隔符,分隔符右邊)
#無:傳回(分隔符,整個字元串)
str = "https://www.baidu.com/"
print(str.rpartition("://"))
print(str.rpartition(","))
print(str.rpartition("."))
print(type(str.rpartition("://")))
# 輸出:
# ('https', '://', 'www.baidu.com/')
# ('', '', 'https://www.baidu.com/')
# ('https://www.baidu', '.', 'com/')
# <class 'tuple'>
切割字元串-split()函數
描述:拆分字元串。通過指定分隔符sep對字元串進行分割,并傳回分割後的字元串清單。
文法:str.split(sep=None, maxsplit=-1) -> list of strings 傳回 字元串清單 或str.split(sep=None, maxsplit=-1)[n]
sep —— 分隔符,預設為空格,但不能為空即(")。
maxsplit —— 最大分割參數,預設參數為-1。
[n] —— 傳回清單中下标為n的元素。清單索引的用法。
#字元串函數-split()
a="d/q.i/s.co/ding"
#沒有分割,輸出整個字元串--['dqiscoding']
print(a.split())
#以.分割--['dq', 'is', 'coding']
print(a.split("."))
#分割後的字元串的第一個,再次分割,從0開始
print(a.split('.')[0].split('/'))
print(a.split('.')[1].split('/'))
切割字元串-rsplit()函數
rsplit() 方法通過指定分隔符對字元串進行分割并傳回一個清單,預設分隔符為所有空字元,包括空格、換行(\n)、制表符(\t)等。類似于 split() 方法,隻不過是從字元串最後面開始分割。
#字元串函數-rsplit()
#從字元串最後面開始分割,但輸出時還是從前面往後輸出
a="d/q.i/s.co/ding"
#沒有分割,輸出整個字元串--['dqiscoding']
print(a.rsplit())
#以.分割--['dq', 'is', 'coding']
print(a.rsplit("."))
#1為最大分割次數,此時隻分割一次
print(a.rsplit(".",1))
#分割後的字元串的第一個,再次分割,從0開始
print(a.rsplit('.')[0].rsplit('/'))
print(a.rsplit('.')[1].rsplit('/'))
切割字元串-splitlines()函數
splitline()方法用于線上邊界處分割線。該函數傳回字元串中的行清單,包括換行符(可選)。
用法:
string.splitlines([keepends])
參數:
keepends(可選):當設定為True時,結果清單中将包含換行符。
這可以是一個數字,指定換行的位置,也可以是任何Unicode字元,例如“\n”,“\r”,“\r\n”等作為字元串的邊界。
代碼#1
string = “Welcome everyone to\rthe world of Geeks\nGeeksforGeeks”
print (string.splitlines( ))
print (string.splitlines(0))
print (string.splitlines(True))
輸出:
[‘Welcome everyone to’, ‘the world of Geeks’, ‘GeeksforGeeks’]
[‘Welcome everyone to’, ‘the world of Geeks’, ‘GeeksforGeeks’]
[‘Welcome everyone to\r’, ‘the world of Geeks\n’, ‘GeeksforGeeks’]
代碼#2
string = “Cat\nBat\nSat\nMat\nXat\nEat”
print (string.splitlines( ))
print(‘India\nJapan\nUSA\nUK\nCanada\n’.splitlines())
輸出:
[‘Cat’, ‘Bat’, ‘Sat’, ‘Mat’, ‘Xat’, ‘Eat’]
[‘India’, ‘Japan’, ‘USA’, ‘UK’, ‘Canada’]
修改大小寫-capitalize()函數
描述:将字元串的第一個字母變成大寫,其餘字母變為小寫。
文法:str.capitalize() —> str 傳回字元串
程式示例:
str1 = "i Love python"
str2 = " i Love python"
str3 = "I Love python"
print(str1.capitalize())
print(str2.capitalize())
print(str3.capitalize())
程式運作結果:
I love python
i love python
I love python
修改大小寫-title()函數
描述:傳回一個滿足标題格式的字元串。即所有英文單詞首字母大寫,其餘英文字母小寫。
文法:str.title() -> str 傳回一個字元串
程式示例:
str = "i love python"
print(str.title())
程式運作結果:
I Love Python
修改大小寫-upper()函數
描述:将字元串中的所有小寫字母轉換為大寫字母。
文法:str.upper() -> str 傳回字元串
程式示例:
str1 = "i love python"
str2 = "I Love Python"
print(str1.upper())
print(str2.upper())
程式運作結果:
I LOVE PYTHON
I LOVE PYTHON
修改大小寫-lower()函數
描述:将字元串中的所有大寫字母轉換為小寫字母。
文法:str.lower() -> str 傳回字元串
程式示例:
str1 = "I Love Python"
str2 = "Groß - α"
print(str1.lower())
print(str2.lower())
程式運作結果:
i love python
groß - α
空格處理-ljust()函數
描述:傳回一個原字元串左對齊,并使用fillchar填充(預設為空格)至指定長度的新字元串。如果指定的長度小于原字元串的長度則傳回原字元串。
文法:str.ljust(width, fillchar) -> str 傳回一個新的字元串
width —— 指定字元串的輸出長度。
fillchar—— 将要填充的單字元,預設為空格。
程式示例:
str = "python"
print(str.ljust(30,"*"))
print(str.ljust(30))
print(str.ljust(30),"1")
程式運作結果:
python************************
python
python 1
空格處理- rjust()函數
描述:傳回一個原字元串右對齊,并使用fillchar填充(預設為空格)至指定長度的新字元串。如果指定的長度小于原字元串的長度則傳回原字元串。
文法:str.ljust(width, fillchar) -> str 傳回一個新的字元串
width —— 指定字元串的輸出長度。
fillchar—— 将要填充的單字元,預設為空格。
程式示例:
str = "python"
print(str.rjust(30,"*"))
print(str.rjust(30))
print("1",str.rjust(30))
程式運作結果:
************************python
python
1 python
空格處理-center()函數
描述:傳回一個長度為width,兩邊用fillchar(單字元)填充的字元串,即字元串str居中,兩邊用fillchar填充。若字元串的長度大于width,則直接傳回字元串str。
文法:str.center(width , “fillchar”) -> str 傳回字元串 注意:引号不可省
width —— 指定字元串長度。
fillchar —— 要填充的單字元,預設為空格。
程式示例:
str = "i love python"
print(str.center(20,"*"))
print(str.center(1,"*"))
print(str.center(20,"8"))
print(str.center(20))
程式運作結果:
***i love python****
i love python
888i love python8888
i love python
空格處理–strip()函數
描述:從字元串str中去掉在其左右兩邊chars中列出的字元。
注:chars傳入的是一個字元數組,編譯器去除兩端所有相應的字元,直到出現第一個在chars中不比對的字元。詳看示例。
文法:str.strip(chars) -> str 傳回一個新的字元串
chars —— 要去除的字元 預設為空格或換行符。
#字元串函數-strip
str = "123456789321"
#strip()從字元串str中去掉在其左右兩邊chars中列出的字元
#去掉了兩邊包含123的字元--456789
print(str.strip("123"))
str1 = "my name is ymyyyy"
#去掉了兩邊包含myis空格的字元--name
print(str1.strip("my is"))
print(str1.strip("my "))
空格處理–lstrip()函數
描述:從字元串str中去掉在其左邊chars中列出的字元。
#字元串函數-lstrip
#去掉左邊列出的字元,直到遇到第一個在chars中不比對的字元
str1 = "bacjabck123kluabc"
print(str1.lstrip("abc"))
str2 = "12578asdfgh12"
print(str2.lstrip("12"))
空格處理-rstrip()函數
描述:從字元串str中去掉在其右邊chars中列出的字元。
#字元串函數-rstrip
#去掉右邊列出的字元,直到遇到第一個在chars中不比對的字元
str1 = "bacjabck123kluabc"
print(str1.rstrip("abc"))
str2 = "12578asdfgh12"
print(str2.rstrip("12"))
字元串拼接-join()函數
join(): 連接配接字元串數組。将字元串、元組、清單中的元素以指定的字元(分隔符)連接配接生成一個新的字元串
文法: ‘sep’.join(seq)
參數說明
sep:分隔符。可以為空
seq:要連接配接的元素序列、字元串、元組、字典
上面的文法即:以sep作為分隔符,将seq所有的元素合并成一個新的字元串
傳回值:傳回一個以分隔符sep連接配接各個元素後生成的字元串
#對字元串進行操作
>>> seq2 = "hello good boy doiido"
>>> print ':'.join(seq2)
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o