Python學(xué)習(xí)筆記(五)——字符串-創(chuàng)新互聯(lián)

字符串

Python字符串——一個(gè)有序字符的集合,用于存儲和表現(xiàn)基于文本的信息。

創(chuàng)新互聯(lián)公司于2013年開始,先為貢覺等服務(wù)建站,貢覺等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為貢覺企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

Python中沒有單個(gè)字符的類型,只有使用一個(gè)字符的字符串。

字符串被劃分為不可變序列,意味著這些字符串所包含的字符存在從左往右的位置程序,并且不可以在原處修改。

常見字符串常量和表達(dá)式:
Python學(xué)習(xí)筆記(五)——字符串

#

字符串常量:

? 單引號:'Yert"s'
? 雙引號:"Yert's"
? 三引號:"....................Yert................................"
? 轉(zhuǎn)義字符:’\tp’
? Raw字符串:r"C:w\test.com"
? Python3.0中的Byte字符串:b’sp\x01
? 只在Python2.6出現(xiàn)的Unicode字符串:u’egg\suu’

單雙引號的作用相同:

>>> 'Yert',"Yert"
('Yert', 'Yert')

Python自動(dòng)合并相鄰的字符串常量:

>>> title="The truth "  'of' "life"
>>>
>>> title
'The truth oflife'

三重引號編寫多行字符串塊:

>>>
>>> longfile='''
...
...
... a
... a
... a
... a
... a
... '''
>>>
>>>
>>> longfile
'\n\n\na\na\na\na\na\n'
>>>
>>> print(longfile)

a
a
a
a
a

>>>

轉(zhuǎn)義字符序列:
Python學(xué)習(xí)筆記(五)——字符串

通過反斜杠轉(zhuǎn)義字符嵌入引號:

>>> 'today\'s',"yesterday\"s"
("today's", 'yesterday"s')

轉(zhuǎn)義序列插入絕對的二進(jìn)制值:

>>>
>>> s = 'a\0b\0c'
>>>
>>> s
'a\x00b\x00c'
>>>
>>> len(s)
5
>>>

Python會在內(nèi)存中保持了整個(gè)字符串的長度和文本,Python沒有字符會結(jié)束一個(gè)字符串。

>>>
>>> s = '\001\002\003'
>>>
>>> s
'\x01\x02\x03'
>>>
>>> len(s)
3
>>>

如果Python沒有作為一個(gè)合法的轉(zhuǎn)義編碼識別出在“\”后的字符,它就直接在最終的字符串中保留反斜杠。

>>> x = "C:\py\code"
>>>
>>> x
'C:\\py\\code'

raw字符串抑制轉(zhuǎn)義

Raw字符串:如果字母r(大寫或小寫)出現(xiàn)在字符串的第一引號的前面,它將會關(guān)閉轉(zhuǎn)義機(jī)制。Python將反斜杠作為常量來保持,就像普通字符串,為了避免錯(cuò)誤,在Windows系統(tǒng)中必須增加字母r。

>>> myfile=open(r'D:test\test.txt','w')
>>>
>>> text="I'm Yert,the word would been wroten in text."
>>>
>>> myfile.write(text)
44
>>>
>>> myfile.close()

索引和分片:

索引:
字符串在Python中被定義為字符的有序集合,可以通過位置偏移值獲取字符。在Python中,字符串中的字符是通過索引(通過在字符串之后的方括號中提供所需要的元素的數(shù)字偏移量)提取的。

Python的偏移量是從0開始,并比字符串的長度小1,還支持在字符串中使用負(fù)偏移的方法從序列中獲取因素。從技術(shù)上講,一個(gè)負(fù)偏移與這個(gè)字符串長度相加可以得到它的正偏移值。

>>> S='YertAlan'
>>>
>>> S[0]
'Y'
>>> S[-1]
'n'
>>>
>>> len(S)
8
>>> S[len(S)-1]
'n'

分片:
當(dāng)使用一對以冒號分隔的偏移來索引字符串時(shí),Python將會返回一個(gè)新的對象,其中包含了以這對偏移所標(biāo)識的連續(xù)內(nèi)容。

>>> S[1:3]
'er'
>>> S[1:]
'ertAlan'
>>>
>>> S[::]
'YertAlan'
>>>
>>> S[-4:-1]
'Ala'
>>>
>>> S[:-2]
'YertAl'

拓展分片:第三個(gè)限制值
分片表達(dá)式增加一個(gè)可選的第三個(gè)索引,用作步進(jìn)。步進(jìn)添加到每個(gè)提取的元素的索引中。完×××式的分片為string[X:Y:Z],表示“索引字符串string對象中的元素,從偏移X直到偏移為Y-1,每隔Z元素索引一次”。第三個(gè)限制沒人為1,所以通常在一個(gè)切片中從左至右提取每一個(gè)元素的原因。

>>> string='ABCDEFGHIJKLMNOPQRST'
>>>
>>> string[1:8]
'BCDEFGH'
>>>
>>> string[1:8:2]
'BDFH'
>>>
>>> string[1:12]
'BCDEFGHIJKL'
>>> string[1:12:3]
'BEHK'

負(fù)數(shù)步進(jìn):

>>> string[1:10]
'BCDEFGHIJ'
>>>
>>> string[1:10:-1]
''
>>> string[10:1:-1]
'KJIHGFEDC'
>>>
>>> string[10:1]
''
>>> string[10:1:-2]
'KIGEC'

字符串轉(zhuǎn)換工具

>>>#將以字符串形式出現(xiàn)的數(shù)字進(jìn)行轉(zhuǎn)換:
>>> int('55'),str(55)
(55, '55')
>>> repr(55)
'55'

注意:Repr函數(shù)可以將一個(gè)對象轉(zhuǎn)換為其字符串形式,然而這些返回的對象作為代碼的字符串,可以重新創(chuàng)建對象。

>>> print(str('Yert'),repr('Yert'))
Yert 'Yert'
>>>#浮點(diǎn)數(shù)轉(zhuǎn)換字符串:
>>> str(3.1415),float("1.5")
('3.1415', 1.5)
>>>
>>> text="1.234E-10"
>>>
>>> float(text)
1.234e-10

字符串代碼轉(zhuǎn)換:
單個(gè)字符可以通過將其傳給內(nèi)置的ord函數(shù)轉(zhuǎn)換為其對應(yīng)的ASCII碼——?jiǎng)t個(gè)函數(shù)實(shí)際返回的是這個(gè)字符在內(nèi)存中對應(yīng)的字符的二進(jìn)制值。而chr函數(shù)將會執(zhí)行相反的操作,獲取ASCII碼并將其轉(zhuǎn)換為對應(yīng)的字符:

>>> ord('s')
115
>>>
>>> chr(115)
's'

>>>#執(zhí)行基于字符串的數(shù)學(xué)運(yùn)算:
>>> S='a'
>>> S=chr(ord(S)+1)
>>> S
'b'
>>> S=chr(ord(S)+1)
>>>
>>> S
'c'

>>> int('5')
5
>>>
>>> ord('5') - ord('0')
5

與循環(huán)語句結(jié)合,進(jìn)行整數(shù)的處理:
將二進(jìn)制字符串轉(zhuǎn)換為整數(shù),并將當(dāng)前值乘以2,并加上下一位數(shù)字值。

>>> B = '1101'
>>> I = 0
>>> while B != '':
...     I = I * 2 + (ord(B[0])-ord('0'))
...     B = B[1:]
...
>>>
>>> I
13
>>>

修改字符串

>>>#使用合并、分片:
>>> S='Yert'
>>>
>>> S = 'Yert'
>>> S = S + 'Alan'
>>> S
'YertAlan'
>>> S = S[:4] + '·D·' + S[4:]       #D之一族
>>>
>>> S
'Yert·D·Alan' 

使用replace函數(shù)修改(索引到字符串,將其改為指定字符串):

>>> S=S.replace('Alan','King')
>>> S
'Yert·D·King'

通過字符串格式化表達(dá)式來創(chuàng)建新字符串:

>>> "March %sst,I'm a apple,I'm have a %s" % (1,'pencil')
"March 1st,I'm a apple,I'm have a pencil"
>>>
>>> "March {0}st,I'm a apple,I'm have a {1}".format(1,'pencil')
"March 1st,I'm a apple,I'm have a pencil"

使用find方法進(jìn)行修改:

>>> S = '13658934230'  #實(shí)現(xiàn)修改號碼,保護(hù)隱私
>>>
>>> node = S.find('5893')
>>>
>>> node
3
>>> S = S[:node] + 'XXXX' + S[(node+4):]
>>>
>>> S
'136XXXX4230'

使用合并操作和replace方法每次運(yùn)行產(chǎn)生新的字符串對象,會消耗性能,所以在對超長文本進(jìn)行多處修改時(shí),需要將字符串轉(zhuǎn)換為一個(gè)支持原處修改的對象。

>>> S = 'yert'
>>>
>>> L = list(S)
>>>
>>> L
['y', 'e', 'r', 't']

內(nèi)置的list函數(shù)(或一個(gè)對象構(gòu)造函數(shù)調(diào)用)以任意序列中的元素創(chuàng)立一個(gè)新的列表,可以將字符串中的字符分解為一個(gè)列表。

Join函數(shù)可以將列表合成為一個(gè)字符串:

>>> D = ''.join(L)
>>>
>>> D
'yert'

其他字符串方法:

>>>#通過分片的方式將數(shù)據(jù)從原始字符串中分離,稱為解析。
>>> S
'yert'
>>>
>>> J = S[1:3]
>>>
>>> J
'er'
>>>#如果分隔符分開了數(shù)據(jù)組件,可以使用split方法提取組件。
>>> date = 'My name is Yert'
>>>
>>> cols = date.split()
>>>
>>> cols
['My', 'name', 'is', 'Yert']
>>>
>>> long_str = 'My name is Yert, I am a computer engineer,I am studing Python'
>>>
>>> cols = long_str.split(',')
>>>
>>> cols
['My name is Yert', ' I am a computer engineer', 'I am studing Python']

>>> line = 'The dog is Sam which it is yellow ! \n'
>>>#清除每行末尾空白
>>> line.rstrip()
'The dog is Sam which it is yellow !'
>>>#全部轉(zhuǎn)換大寫
>>> line.upper()
'THE DOG IS SAM WHICH IT IS YELLOW ! \n'
>>>#測試內(nèi)容
>>> line.isalpha()
False
>>>
>>>#檢測末尾內(nèi)容字符串
>>> line.endswith('! \n')
True
>>>#檢測開始內(nèi)容字符串
>>> line.startswith('The')
True
>>> line[-len('! \n'):] == '! \n'
True
>>>
>>> line[:len('The ')] == 'The '
True

字符串格式化表達(dá)式
格式化字符串:

  1. 在%操作符的左側(cè)放置一個(gè)需要進(jìn)行格式化的字符串,這個(gè)字符串帶有一個(gè)或多個(gè)嵌入的轉(zhuǎn)換目標(biāo),都以%開頭。
  2. 在%操作符右側(cè)放置也(或多個(gè),嵌入到元組中)對象,這些對象將會插入到左側(cè)想讓Python進(jìn)行格式化字符串的一個(gè)(或多個(gè))轉(zhuǎn)換目標(biāo)的位置上去。
>>> '%d years later,I have became a %s!' % (3,'engineer')
'3 years later,I have became a engineer!'

高級字符串格式化表達(dá)式:
Python學(xué)習(xí)筆記(五)——字符串

轉(zhuǎn)換目標(biāo)通用結(jié)構(gòu):
%[ (name) ] [flags] [width] [.precision] typecode

表中的字節(jié)碼出現(xiàn)在目標(biāo)字符串的尾部,在%和字符碼只間:可以放置一個(gè)字典的鍵;羅列出左對齊(-)、正負(fù)號(+)和補(bǔ)零(0)的標(biāo)志位;給出數(shù)字的整體長度和小數(shù)點(diǎn)后的位數(shù)等。Width和precision都可編碼為一個(gè)*,以指定它們應(yīng)該從輸入值的下一項(xiàng)中取值。

>>>#%d對整數(shù)進(jìn)行默認(rèn),%-6d進(jìn)行6位的左對齊格式化,%06d進(jìn)行6位補(bǔ)零的格式化
>>> M = 24
>>>
>>> resu = "result: %d %-6d %06d" % (M,M,M)
>>>
>>> resu
'result: 24 24     000024'

>>>#可以在格式化字符串中用一個(gè)*來指定通過計(jì)算得出width和precision,從而迫使它們的值從%運(yùn)算符右邊的輸出中的下一項(xiàng)獲取,元組中的4指定為precision。
>>> '%f,%.2f,%.*f' % (1/3.0,1/3.0,4,1/3.0)
'0.333333,0.33,0.3333'

基于字典字符串格式化

>>>#通過字典的鍵來提取對應(yīng)的值:
>>> "%(a)d %(x)s" % {'a':1,'x':'Yert'}
'1 Yert'

>>>#Format方法格式化字符串:
>>> date = '{0},{1} and {2}'
>>>
>>> date.format('Python','PHP','Go')
'Python,PHP and Go'
>>>
>>> date = '{a}, and {c}'
>>>
>>> date.format(a='Python',b='PHP',c='Go')
'Python,PHP and Go'
>>>
>>>
>>> date = '{a},{0} and {c}'
>>>
>>> date.format('PHP',a='Python',c='Go')
'Python,PHP and Go'

格式化字符串可以指定對象屬性和字典鍵。

>>> import sys
>>>
>>> 'The machine {1[name]} runs {0.platform}'.format(sys,{'name':'Yert'})
'The machine Yert runs win32'
>>>
>>> 'The machine {config[name]} runs {sys.platform}'.format(sys=sys,config={'name':'Yert'})
'The machine Yert runs win32'

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享名稱:Python學(xué)習(xí)筆記(五)——字符串-創(chuàng)新互聯(lián)
標(biāo)題來源:http://bm7419.com/article16/cdepgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站維護(hù)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站排名自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)