天天看點

Python學習3 字元串和相關常用函數

字元串聲明

雙引号,單引号,三單引号,三雙引号

裡面有雙引号,外面使用單引号

裡面有單引号,外面使用雙引号

或者使用轉義字元

#字元串
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’(指向一個新的字元串)

Python學習3 字元串和相關常用函數

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')
           

字元串常見函數

Python學習3 字元串和相關常用函數

擷取字元串長度-len()函數

Python學習3 字元串和相關常用函數

查找内容-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.

示例:

Python學習3 字元串和相關常用函數

判斷- 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:

Python學習3 字元串和相關常用函數

示例2:

Python學習3 字元串和相關常用函數

計算-出現次數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