版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Python字符串操作(string替換、刪除、截取、復(fù)制、連接、比較、查找、包含、大小寫轉(zhuǎn).Python提供了許多內(nèi)置的字符串操作,下面是對一些最常用的操作的概述:替換字符串:使用replace()方法,它返回一個新字符串,其中所有舊的子字符串被新的子字符串替換。pythons="Hello,world!"new_s=s.replace("world","Python")print(new_s)#輸出"Hello,Python!"刪除字符串:replace()方法也可以用于刪除字符串,只需要將新的子字符串設(shè)置為空字符串。pythons="Hello,world!"new_s=s.replace("world","")print(new_s)#輸出"Hello,!"截取字符串:可以使用切片操作來截取字符串。切片操作使用兩個索引,一個表示開始位置,另一個表示結(jié)束位置(但不包括該位置的字符)。pythons="Hello,world!"print(s[0:5])#輸出"Hello"復(fù)制字符串:Python中的字符串是不可變的,所以復(fù)制一個字符串實際上是創(chuàng)建了一個新的字符串對象??梢允褂们衅僮鲝?fù)制字符串。pythons="Hello,world!"print(s[:])#輸出"Hello,world!"連接字符串:使用+運算符可以將兩個字符串連接在一起。pythons1="Hello"s2=",world!"print(s1+s2)#輸出"Hello,world!"比較字符串:使用==、!=、<、>、<=、>=運算符比較字符串。這些運算符返回一個布爾值,表示兩個字符串是否相等或如何比較。pythons1="Hello"s2="World"print(s1==s2)#輸出False查找子字符串:使用find()和index()方法查找子字符串。這兩個方法都返回子字符串首次出現(xiàn)的索引,如果找不到子字符串,則返回-1。區(qū)別在于,如果未找到子字符串,find()返回-1,而index()引發(fā)一個異常。pythons="Hello,world!"print(s.find("world"))#輸出7檢查字符串是否包含某個子字符串:使用in運算符。如果原字符串包含指定的子字符串,返回True,否則返回False。pythons="Hello,world!"print("world"ins)#輸出True大小寫轉(zhuǎn)換:使用lower()、upper()、capitalize()和title()方法轉(zhuǎn)換大小寫。這些方法返回一個新字符串,其中所有的字符都被轉(zhuǎn)換(或首字母被大寫,其余小寫)。pythons="Hello,world!"print(s.lower())#輸出"hello,world!"分割字符串:使用split()方法將字符串分割為子字符串列表??梢酝ㄟ^指定分隔符來指定如何分割字符串。如果沒有指定分隔符,則使用空格作為默認(rèn)分隔符。pythons="Hello,world!ThisisPython."print(s.split())#輸出['Hello,','world!','This','is','Python.']
python字符串操作方法詳解字符串序列用于表示和存儲文本,python中字符串是不可變對象。字符串是一個有序的字符的集合,用于存儲和表示基本的文本信息,一對單,雙或三引號中間包含的內(nèi)容稱之為字符串。其中三引號可以由多行組成,編寫多行文本的快捷語法,常用文檔字符串,在文件的特定地點,被當(dāng)做注釋。便捷的多行注釋。Python實際三類字符串:1.通常意義字符串(str)2.原始字符串,以大寫R或小寫r開始,r'',不對特殊字符進(jìn)行轉(zhuǎn)義3.Unicode字符串,u''basestring子類python中字符串支持索引、切片操作。根據(jù)python3.x的字符串源碼文件可見,總共44個方法,查找列出如下:imageimage方法描述string.capitalize()把字符串的第一個字符大寫string.center(width)返回一個原字符串居中,并使用空格填充至長度width的新字符串string.count(str,beg=0,end=len(string))返回str在string里面出現(xiàn)的次數(shù),如果beg或者end指定則返回指定范圍內(nèi)str出現(xiàn)的次數(shù)string.decode(encoding='UTF-8',errors='strict')以encoding指定的編碼格式解碼string,如果出錯默認(rèn)報一個ValueError的異常,除非errors指定的是'ignore'或者'replace'string.encode(encoding='UTF-8',errors='strict')以encoding指定的編碼格式編碼string,如果出錯默認(rèn)報一個ValueError的異常,除非errors指定的是'ignore'或者'replace'string.endswith(obj,beg=0,end=len(string))檢查字符串是否以obj結(jié)束,如果beg或者end指定則檢查指定的范圍內(nèi)是否以obj結(jié)束,如果是,返回True,否則返回False.string.expandtabs(tabsize=8)把字符串string中的tab符號轉(zhuǎn)為空格,tab符號默認(rèn)的空格數(shù)是8。string.find(str,beg=0,end=len(string))檢測str是否包含在string中,如果beg和end指定范圍,則檢查是否包含在指定范圍內(nèi),如果是返回開始的索引值,否則返回-1string.index(str,beg=0,end=len(string))跟find()方法一樣,只不過如果str不在string中會報一個異常.string.isalnum()如果string至少有一個字符并且所有字符都是字母或數(shù)字則返回True,否則返回Falsestring.isalpha()如果string至少有一個字符并且所有字符都是字母則返回True,否則返回Falsestring.isdecimal()如果string只包含十進(jìn)制數(shù)字則返回True否則返回False.string.isdigit()如果string只包含數(shù)字則返回True否則返回False.string.islower()如果string中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫,則返回True,否則返回Falsestring.isnumeric()如果string中只包含數(shù)字字符,則返回True,否則返回Falsestring.isspace()如果string中只包含空格,則返回True,否則返回False.string.istitle()如果string是標(biāo)題化的(見title())則返回True,否則返回Falsestring.isupper()如果string中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫,則返回True,否則返回Falsestring.join(seq)以string作為分隔符,將seq中所有的元素(的字符串表示)合并為一個新的字符串string.ljust(width)返回一個原字符串左對齊,并使用空格填充至長度width的新字符串string.lower()轉(zhuǎn)換string中所有大寫字符為小寫.string.lstrip()截掉string左邊的空格string.maketrans(intab,outtab])maketrans()方法用于創(chuàng)建字符映射的轉(zhuǎn)換表,對于接受兩個參數(shù)的最簡單的調(diào)用方式,第一個參數(shù)是字符串,表示需要轉(zhuǎn)換的字符,第二個參數(shù)也是字符串表示轉(zhuǎn)換的目標(biāo)。max(str)返回字符串
str
中最大的字母。min(str)返回字符串
str
中最小的字母。string.partition(str)有點像find()和split()的結(jié)合體,從str出現(xiàn)的第一個位置起,把字符串string分成一個3元素的元組(string_pre_str,str,string_post_str),如果string中不包含str則string_pre_str==string.string.replace(str1,str2,
num=string.count(str1))把string中的str1替換成str2,如果num指定,則替換不超過num次.string.rfind(str,beg=0,end=len(string))類似于find()函數(shù),不過是從右邊開始查找.string.rindex(str,beg=0,end=len(string))類似于index(),不過是從右邊開始.string.rjust(width)返回一個原字符串右對齊,并使用空格填充至長度width的新字符串string.rpartition(str)類似于partition()函數(shù),不過是從右邊開始查找.string.rstrip()刪除string字符串末尾的空格.string.split(str="",num=string.count(str))以str為分隔符切片string,如果num有指定值,則僅分隔num個子字符串string.splitlines(num=string.count('\n'))按照行分隔,返回一個包含各行作為元素的列表,如果num指定則僅切片num個行.string.startswith(obj,beg=0,end=len(string))檢查字符串是否是以obj開頭,是則返回True,否則返回False。如果beg和end指定值,則在指定范圍內(nèi)檢查.string.strip([obj])在string上執(zhí)行l(wèi)strip()和rstrip()string.swapcase()翻轉(zhuǎn)string中的大小寫string.title()返回"標(biāo)題化"的string,就是說所有單詞都是以大寫開始,其余字母均為小寫(見istitle())string.translate(str,del="")根據(jù)str給出的表(包含256個字符)轉(zhuǎn)換string的字符,要過濾掉的字符放到del參數(shù)中string.upper()轉(zhuǎn)換string中的小寫字母為大寫string.zfill(width)返回長度為width的字符串,原字符串string右對齊,前面填充0string.isdecimal()isdecimal()方法檢查字符串是否只包含十進(jìn)制字符。這種方法只存在于unicode對象。此表格參考了/A-FM/p/5691468.html,主要因為它的方法點進(jìn)去,有詳細(xì)解釋,借鑒過來,主要方便大家。[圖片上傳中…(image-dae1b3-1611452458936-1)]總結(jié)上面的用法,對其分個類,我們可以把字符串操作分為字符串的替換、刪除、截取、復(fù)制、連接、比較、查找、分割等但是,首先得判斷這個對象是不是字符串,方法如下:如何判斷一個對象是不是字符串python中字符串有兩重,一種是str,一種是unicode。那如何判斷一個對象是不是字符串呢?應(yīng)該使用isinstance(s,basestring),而不是isinstance(s,str)??聪旅胬?/p>
>>>a
=
'hi'
>>>isinstance(a,str)
True
>>>b
=
u'Hi'
>>>isinstance(b,str)
False
>>>isinstance(b,basestring)
True
>>>isinstance(b,unicode)
True
>>>isinstance(a,unicode)
False要正確判讀一個對象是不是字符串,要有basestring,因為basestring是str和unicode的基類,包含了普通字符串和unicode類型。如何去掉字符串的雙引號a
=
'"string"'
print(a,type(a))
b
=
eval(a)
print(b,type(b))
結(jié)果:
"string"
<class
'str'>
string
<class
'str'>下面講str對象的基本用法字符串的基本用法可以分以下五類,即性質(zhì)判定、查找替換、分切與連接、變形、填空與刪減。(a)性質(zhì)判定性質(zhì)判定有以下幾個方法。isalnum():是否全是字母和數(shù)字,并至少有一個字符
isalpha():是否全是字母,并至少有一個字符
isdigit():是否全是數(shù)字,并至少有一個字符
islower():字符串中字母是否全是小寫
isupper():字符串中字母是否全是小寫
isspace():是否全是空白字符,并至少有一個字符
istitle():判斷字符串是否每個單詞都有且只有第一個字母是大寫
startswith(prefix[,start[,end]]):用于檢查字符串是否是以指定子字符串開頭,如果是則返回True,否則返回False。如果參數(shù)start和end指定值,則在指定范圍內(nèi)檢查。endswith(suffix[,start[,end]]):用于判斷字符串是否以指定后綴結(jié)尾,如果以指定后綴結(jié)尾返回True,否則返回False??蛇x參數(shù)"start"與"end"為檢索字符串的開始與結(jié)束位置。is*()這些都比較簡單,從字母的字面上就可以理解,with()函數(shù)可以接受start和end參數(shù),如果善加利用可以優(yōu)化性能。另外,從python2.5版本起,with()函數(shù)族的第一個參數(shù)可接受tuple類型實參,當(dāng)實參中某個元素匹配時,即返回True(b)查找與替換count(sub[,start[,end]]):統(tǒng)計字符串里某個字符sub出現(xiàn)的次數(shù)??蛇x參數(shù)為在字符串搜索的開始與結(jié)束位置。這個數(shù)值在調(diào)用replace方法時用得著。find(sub[,start[,end]]):檢測字符串中是否包含子字符串sub,如果指定start(開始)和end(結(jié)束)范圍,則檢查是否包含在指定范圍內(nèi),如果包含子字符串返回開始的索引值,否則返回
-1index(sub[,start[,end]]):跟find()方法一樣,只不過如果sub不在string中會拋出ValueError異常。rfind(sub[,start[,end]]):類似于find()函數(shù),不過是從右邊開始查找。rindex(sub[,start[,end]]):類似于index(),不過是從右邊開始。replace(old,new[,count]):用來替換字符串的某些子串,用new替換old。如果指定count參數(shù)話,就最多替換count次,如果不指定,就全部替換前面五個方法都可以接受start、end參數(shù),善加利用可以優(yōu)化性能。對于查找某個字符串中是否有子串,不推薦使用index族和find族方法,推薦使用in和notin操作(c)分切與連接partition(sep):用來根據(jù)指定的分隔符將字符串進(jìn)行分割,如果字符串包含指定的分隔符,則返回一個3元的元組,第一個為分隔符左邊的子串,第二個為分隔符本身,第三個為分隔符右邊的子串。如果sep沒有出現(xiàn)在字符串中,則返回值為(sep,",")。partition()方法是在2.5版中新增的。rpartition(sep):類似于partition()函數(shù),不過是從右邊開始查找.splitness([keepends]):按照行('\r',
'\r\n',\n')分隔,返回一個包含各行作為元素的列表,如果參數(shù)
keepends為
False,不包含換行符,如果為
True,則保留換行符。split(sep[,maxsplit]]):通過指定分隔符對字符串進(jìn)行切片,如果參數(shù)maxsplit有指定值,則僅分隔maxsplit個子字符串,返回分割后的字符串列表。rsplit(sep[,maxsplit]]):同split(),不過是從右邊開始??聪旅胬觭tr1
=
'ab
c\n\nde
fg\rkl\r\n'
str1.splitlines();
str2
=
'ab
c\n\nde
fg\rkl\r\n'
str2.splitlines(True)輸出如下:['ab
c',
'',
'de
fg',
'kl']
['ab
c\n',
'\n',
'de
fg\r',
'kl\r\n']
split()函數(shù)有個小陷阱,比如對于字符串s,s.split()和s.split("")的返回值不同。看下面代碼s
=
"
hello
world"#前面有兩個空格
s.split()
s.split('
')輸出結(jié)果如下['hello',
'world']
['',
'',
'hello',
'world']這是為什么呢?原因在于:當(dāng)忽略sep參數(shù)或者sep參數(shù)為None時與明確給sep賦予字符串值時,split()采用了兩種不同的算法。對于前者,split()先除去兩端的空白符,然后以任意長度的空白符串作為界定符分切字符串(即連續(xù)空白符串會被單一空白符看待);對于后者則認(rèn)為兩個兩個連續(xù)空白符之間存在一個空字符串,因此對空字符串,它們的返回值也不同。>>>".split()
[]
>>>''.split('
')
[''](d)變形lower():轉(zhuǎn)換字符串中所有大寫字符為小寫。upper():將字符串中的小寫字母轉(zhuǎn)為大寫字母。capitalize():將字符串的第一個字母變成大寫,其他字母變小寫。對于8位字節(jié)編碼需要根據(jù)本地環(huán)境。swapcase():用于對字符串的大小寫字母進(jìn)行轉(zhuǎn)換,大寫轉(zhuǎn)小寫,小寫轉(zhuǎn)大寫。title():返回"標(biāo)題化"的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫。這些都是大小寫切換,title()并不能除去字符串兩端的空白符也不會把連續(xù)空白符替換成一個空格,如果有這樣的需求,可以用string模塊的capwords(s)函數(shù),它能除去兩端空白符,并且能將連續(xù)的空白符用一個空格符代替??聪旅胬樱?coding=utf-8
import
string
s
=
"
hello
world"
s.title()
string.capwords(s)輸出結(jié)果如下:
Hello
World
Hello
World(e)刪減與填充strip([chars]):用于移除字符串頭尾指定的字符(默認(rèn)為空格),如果有多個就會刪除多個。lstrip([chars]):用于截掉字符串左邊的空格或指定字符。rstrip([chars]):用于截掉字符串右邊的空格或指定字符。center(width[,fillchar]):返回一個原字符串居中,并使用fillchar填充至長度width的新字符串。默認(rèn)填充字符為空格ljust(width[,fillchar]):返回一個原字符串左對齊,并使用fillchar填充至指定長度的新字符串,默認(rèn)為空格。如果指定的長度小于原字符串的長度則返回原字符串。rjust(width[,fillchar]):返回一個原字符串右對齊,并使用fillchar填充至長度width的新字符串。如果指定的長度小于字符串的長度則返回原字符串。zfill(width):返回指定長度的字符串,原字符串右對齊,前面填充0`expandtabs([tabsize])`:把字符串中的tab符號('\t')轉(zhuǎn)為適當(dāng)數(shù)量的空格,默認(rèn)情況下是轉(zhuǎn)換為8``個。|(f)字符串切片切片操作(slice)可以從一個字符串中獲取子字符串(字符串的一部分)。我們使用一對方括號、起始偏移量start、終止偏移量end以及可選的步長step來定義一個分片。格式:[start:end:step]?[:]提取從開頭(默認(rèn)位置0)到結(jié)尾(默認(rèn)位置-1)的整個字符串?[start:]從start提取到結(jié)尾?[:end]從開頭提取到end-1?[start:end]從start提取到end-1?[start:end:step]從start提取到end-1,每step個字符提取一個?左側(cè)第一個字符的位置/偏移量為0,右側(cè)最后一個字符的位置/偏移量為-1
str
=
'0123456789′
str[0:3]
#截取第一位到第三位的字符
str[:]
#截取字符串的全部字符
str[6:]
#截取第七個字符到結(jié)尾
str[:-3]
#截取從頭開始到倒數(shù)第三個字符之前
str[2]
#截取第三個字符
str[-1]
#截取倒數(shù)第一個字符
str[::-1]
#創(chuàng)造一個與原字符串順序相反的字符串
str[-3:-1]
#截取倒數(shù)第三位與倒數(shù)第一位之前的字符
str[-3:]
#截取倒數(shù)第三位到結(jié)尾
str[:-5:-3]
#逆序截取,截取倒數(shù)第五位數(shù)與倒數(shù)第三位數(shù)之間<br>print
str[::2]
#按照步長為二,返回所有值(g)maketrans和translate的用法開發(fā)敏感詞語過濾程序,提示用戶輸入內(nèi)容,如果用戶輸入的內(nèi)容中包含特殊的字符:
如:"蒼老師"“東京熱”,則將內(nèi)容替換為***sentence_input
=
input("請輸入:")
sensitive_varcabulary1
=
str.maketrans("蒼老師",'***')
sensitive_varcabulary2
=
str.maketrans("東京熱",'***')
new_sentence
=
sentence_input.translate(sensitive_varcabulary1).translate(sensitive_varcabulary2)
print(new_sentence)
#
請輸入:dads大大的蒼老師
#
dads大大的***(h)字符串格式化(format)用法:它通過{}和:
代替?zhèn)鹘y(tǒng)的%方法1,使用關(guān)鍵字參數(shù)要點:關(guān)鍵字參數(shù)值要對得上,可用字典當(dāng)關(guān)鍵字參數(shù)傳入值,字典前加**即可>>>
hash
=
{'name':'hoho','age':18}
>>>
'my
name
is
{name},age
is
{age}'.format(name='hoho',age=19)
'my
name
is
hoho,age
is
19'
>>>
'my
name
is
{name},age
is
{age}'.format(**hash)
'my
name
is
hoho,age
is
18'2,填充與格式化:[填充字符][對齊方式<^>][寬度]'{:<20}'.format(10)
#左對齊
'10
'
'{:>20}'.format(10)
#右對齊
'
10'
'{:^20}'.format(10)
#居中對齊
'
10
'3,使用位置參數(shù)要點:從以下例子可以看出位置參數(shù)不受順序約束,且可以為{},只要format里有相對應(yīng)的參數(shù)值即可,參數(shù)索引從0開,傳入位置參數(shù)列表可用*列表>>>
li
=
['hoho',18]
>>>
'my
name
is
{}
,age
{}'.format('hoho',18)
'my
name
is
hoho
,age
18'
>>>
'my
name
is
{1}
,age
{0}'.format(10,'hoho')
'my
name
is
hoho
,age
10'
>>>
'my
name
is
{1}
,age
{0}
{1}'.format(10,'hoho')
'my
name
is
hoho
,age
10
hoho'
>>>
'my
name
is
{}
,age
{}'.format(*li)
'my
name
is
hoho
,age
18'4,精度與進(jìn)制>>>
'{0:.2f}'.format(1/3)
'0.33'
>>>
'{0:b}'.format(10)
#二進(jìn)制
'
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 道路安全學(xué)習(xí)心得體會
- 護(hù)理人員職業(yè)道德培訓(xùn)
- 油庫應(yīng)急處理流程
- 初中歷史教案反思
- 布藝扎染教案反思
- 白露主題班會教案
- 和的認(rèn)識說課稿
- 文化創(chuàng)意承銷協(xié)議書范本
- 水利工程機械施工合同
- 土建項目協(xié)議書范本
- GB/T 307.1-1994滾動軸承向心軸承公差
- GB/T 19010-2009質(zhì)量管理顧客滿意組織行為規(guī)范指南
- 個體工商戶公司章程范本
- GB 14884-2003蜜餞衛(wèi)生標(biāo)準(zhǔn)
- 新《統(tǒng)計法》解讀
- 化學(xué)品安全技術(shù)說明書汽油安全技術(shù)說明書
- 落實企業(yè)安全生產(chǎn)主體責(zé)任三年行動重點任務(wù)清單分解
- 部編版七年級上冊語文閱讀高頻考點解析與突破課件
- 《初中英語寫作》課件
- DB37-T 5202-2021 建筑與市政工程基坑支護(hù)綠色技術(shù)標(biāo)準(zhǔn)
- 《學(xué)會感恩與愛同行》PPT主題班會課件
評論
0/150
提交評論