Python零基礎(chǔ)入門學(xué)習(xí)04:Python基本數(shù)據(jù)類型:字符串類型

:本文所有代碼均經(jīng)過Python 3.7實際運行檢驗,保證其嚴謹性。

字符串的表示

Python提供了4種表示字符串的方法:

s1 = '我'
s2 = "我"
s3 = '''我'''
s4 = """我"""

大多數(shù)情況下,以上4種字符串的表示效果是一樣的,只要注意前后的引號一定是成對的;換句話說,前面是單引號后面一定也是單引號,前面是3個雙引號,后面句不能用3個單引號結(jié)尾。

默認來說,單純的字符串一般多用第1種,即兩個單引號。3個單引號和3個雙引號有特殊的用途,就是它們可以用于多行字符串引用,如下面的例子:

s = '''
人生到處知何似,應(yīng)似飛鴻踏雪泥: 
泥上偶然留指爪,鴻飛那復(fù)計東西。 
老僧已死成新塔,壞壁無由見舊題。 
往日崎嶇還記否,路長人困蹇驢嘶。'''
print(s)

<<<  # 正確輸出,且是分行的。
人生到處知何似,應(yīng)似飛鴻踏雪泥: 
泥上偶然留指爪,鴻飛那復(fù)計東西。 
老僧已死成新塔,壞壁無由見舊題。 
往日崎嶇還記否,路長人困蹇驢嘶。
<<<

這種這種功能是2個單引號或2個雙引號表示法所不能做到的。如果多行字符串用2個單引號或2個雙引號來表示的話,系統(tǒng)會報錯。如下所示:

s = '人生到處知何似,應(yīng)似飛鴻踏雪泥: 
泥上偶然留指爪,鴻飛那復(fù)計東西。 
老僧已死成新塔,壞壁無由見舊題。 
往日崎嶇還記否,路長人困蹇驢嘶。'
print(s)

<<<
  File "C:\xxxxx\test.py", line 1
    s = '人生到處知何似,應(yīng)似飛鴻踏雪泥:
                          ^
SyntaxError: EOL while scanning string literal
<<<
轉(zhuǎn)義符\

轉(zhuǎn)義符表達特定字符的本意。

轉(zhuǎn)義符和某些字母搭配有固定的意思,比如
"\b"回退,"\n"換行(光標(biāo)移動到下行首),"\r"回車(光標(biāo)移動到本行首)等。

字符串操作符

n * x 或 x * n:復(fù)制n次字符串x。

字符串處理函數(shù)

hex(x):整數(shù)x轉(zhuǎn)化為以字符串形式表示的十六進制的數(shù)。

oct(x):整數(shù)x轉(zhuǎn)化八進制以字符串形式表示的八進制的數(shù)。

chr(u):u為Unicode編碼,返回其對應(yīng)的字符。

ord(x):x為字符,返回其對應(yīng)的Uniocde編碼。比如ord("A")輸出65,ord("B")輸出66,ord("a")輸出97。

Unicode編碼
Python 3的字符串的編碼方式

  • 統(tǒng)一字符編碼,即覆蓋幾乎所有字符的編碼方式。
  • 0到1114111(0x10FFFF)空間,每個編碼對應(yīng)一個字符。
  • Python字符串中每個字符都是Unicode編碼字符。
for i in range(12):
    print(chr(9800 + i), end = "")

<<<????????????
以上是輸出Unicode中十二星座的符號。
字符串處理方法

“方法”(method),在編程中是一個專有名詞。

  • “方法”特指<a>.<b>()風(fēng)格中的函數(shù)<b>()。

  • 方法本身也是函數(shù),但與<a>有關(guān),<a>.<b>()風(fēng)格(面向?qū)ο缶幊蹋┦褂谩?lt;a>.<b>()就是對象.方法()。a是對象,b是方法。

  • 字符串和變量都是<a>,也就是對象,存在一些方法。

字符串的方法及引用

str.lower()或str.upper()——返回字符串的副本,全部字符小寫/大寫。

str.split(sep=None, num=-1)——返回一個列表。

其中,sep是separater的前三個字母,表示分隔符。sep分隔符默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等,也可以為空(即不帶任何東西,不帶引號,如(str.split()),也可以為空格(如str.split(" ")),但不能為空字符串(str.split("")),否則會報錯ValueError: empty separator;num表示分隔的次數(shù),默認為-1,即全部分隔。

此方法可以將字符串轉(zhuǎn)化成列表。如"A, B, C".split(",")結(jié)果為['A', 'B', 'C']。

s = 'a-b-c'
l = s.split('-')
print(l)
l = s.split()  #分隔符sep為空的情況。
print(l)
l = s.split('-', 1)  #分隔次數(shù)為1的情況。
print(l)

<<<
['a', 'b', 'c']
['a-b-c']  #分隔符sep為空的情況。#
['a', 'b-c']  #分隔次數(shù)為1的情況。#
<<<

str.count(sub)——返回子串sub在str中出現(xiàn)的次數(shù)。

str.replace(old, new)——返回字符串str的副本,其中所有old子串被替換為new。

str.center(width[, fillchar])——字符串str根據(jù)寬度width居中,fillchar可選。

s1 = "Python"
s2 = s1.center(20, "=")
print("s2是:")
print(s2)
print("len(s2) =", len(s2))

<<<
s2是:
=======Python=======    #字符串s2的長度len為20
len(s2) = 20
<<<

str.strip()——返回str的副本,這個副本原字符串的頭和尾的空格,以及位于頭尾的\n \t之類的字符給刪掉了。注意,字符中間的空格等符號不刪除。比如" Py thon ".strip()返回為"Py thon"。

str.strip(chars)——從str中去掉在其左側(cè)和右側(cè)chars字符串中含有的字符。如"= python= ".strip(" =np")的輸出為"ytho"。

sep.join(seq)——sep表示分隔符,可以為空,但當(dāng)sep為空時,就沒有分隔符了。seq表示要連接的元素序列,比如字符串、元組、字典、集合。如果序列里的元素為int,必須轉(zhuǎn)化為str才能使用該方法。實現(xiàn)的效果是,把seq轉(zhuǎn)換為字符串,并且在seq中的除最后元素外每個元素后增加一個sep,返回一個以分隔符sep連接各個元素后生成的字符串。此方法主要為了字符增加分隔符,將列表等seq轉(zhuǎn)化為字符串。

值得注意的是,字典雖然是無序的,但是使用了sep.join(seq)方法后,輸出的字符串只輸出鍵而不輸出值,而且其鍵輸出的順序是按照字典本身的順序來的。集合則遵循無序的原則。

s = "abcde"  # seq為字符串時
l = ['a', 'b', 'c', 'd', 'e']  # seq為列表時
d = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
S = {'a', 'b', 'c', 'd', 'e'}
i = ''  # sep為空
j = "-" # sep不為空
print("sep為空時:字符串轉(zhuǎn)化為{},列表轉(zhuǎn)化為{}。".format(i.join(s), i.join(l)))
print("sep不為空時:字符串轉(zhuǎn)化為{},列表轉(zhuǎn)化為{}。".format(j.join(s), j.join(l)))
print("sep為空時:字典轉(zhuǎn)化為{},集合轉(zhuǎn)化為{}。".format(i.join(d), i.join(S)))
print("sep不為空時:字典轉(zhuǎn)化為{},集合轉(zhuǎn)化為{}。".format(j.join(d), j.join(S)))

<<<
sep為空時:字符串轉(zhuǎn)化為abcde,列表轉(zhuǎn)化為abcde。
sep不為空時:字符串轉(zhuǎn)化為a-b-c-d-e,列表轉(zhuǎn)化為a-b-c-d-e。
sep為空時:字典轉(zhuǎn)化為abcde,集合轉(zhuǎn)化為ceabd。
sep不為空時:字典轉(zhuǎn)化為a-b-c-d-e,集合轉(zhuǎn)化為c-e-a-b-d。
<<<

上述字符串的諸多方法中,str.split(sep=None, num=-1)sep.join(seq)兩個可能是比較重要且容易弄混的。它們的重要性在于它們能夠使得字符串和列表(后面要學(xué)的一種重要數(shù)據(jù)類型)之間互相轉(zhuǎn)換。請對它們稍微留意一二,多看看它們在本文里相應(yīng)的例子。

字符串的索引和切片

字符串還有一種非常重要的操作,也是最常用的操作之一,那就是切片(slicing)。

而字符串的切片操作是根據(jù)索引(index)進行的,其目的是從字符串提取里面的元素或子串。

索引(indexing)

任意一個字符串,除了有其字面上的元素外,其實還有字面外的隱藏元素,也就是字面元素對應(yīng)的“編號”。比如s = 'abc','a'不光是s中的元素,還是s中的第1個元素。

Python中字符串有兩套編號:

  • 從左向右的編號,采用非負整數(shù)編號。從0開始編號,向右依次加1。對s = 'abc'而言,s[0] = 'a'表示s的第1個元素,s[1] = 'b'表示s的第2個元素,依此類推。
  • 從右向左的編號,采用負整數(shù)編號。從-1開始,向左依次減1。對s = 'abc'而言,s[-1] = 'c'表示s的倒數(shù)第1個元素,s[-2] = 'b'表示s的
    倒數(shù)第2個字符,依此類推。
s = 'abc'

s[0]  # s的第1個元素
Out[10]: 'a'

s[1]
Out[11]: 'b'

s[-1]  # s的倒數(shù)第1個元素
Out[12]: 'c'

s[-2] 
Out[13]: 'b'
切片(Slicing)

切片語法的原型是s[start:stop:stepSize],其中start、stop和stepSize三個參數(shù)均是可選參數(shù)。

start:切片開始的元素的索引(index),該索引對應(yīng)的元素包含在切片后的字符串當(dāng)中。
stop:切片結(jié)束的元素的索引(index),該索引對應(yīng)的元素包含在切片后的字符串當(dāng)中。
stepSize:切片時的步長,默認為1。

要正確理解切片的這幾個函數(shù)。請參考range()函數(shù)中的同樣的參數(shù),它們的含義是相通的。range()函數(shù)詳解請移步Python零基礎(chǔ)入門學(xué)習(xí)02:Python基本數(shù)據(jù)類型:數(shù)字類型查看最后一部分。

切片語法的最簡形式是s[:],其效果就是s字符串本身,即s[:]=s。其簡單形式還有s[::],效果等同于s[:]。還有s[start: : ]、s[:stop:]、s[: :stepSize]等形式。

'abc'[1:3],表示從index=1的元素開始獲取,直到取到index=3的元素,但不獲取index=3的元素。這里是切片的幾個例子:

s = 'abc'

s[1:3]
Out[15]: 'bc'

s[:]
Out[16]: 'abc'

s[1:]
Out[17]: 'bc'

s[1::2]
Out[18]: 'b'

To be continued.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第二章 審問拖延:被架在審判席上的失敗恐懼癥 怕不足被發(fā)現(xiàn)、怕打不到要求、怕做的不完美、恐懼失敗,是拖延癥者常有的...
    吳海燕_YuBin閱讀 577評論 0 2
  • 如果你再給我遲到的愛,我就不要了。
    殘愈閱讀 253評論 0 0
  • 昨天是感恩節(jié),老師給我們留的感恩節(jié)作業(yè)。放學(xué)回到家以后我和媽媽說了,然后媽媽給我講了感恩節(jié)的意義, 從晚上...
    樊依諾閱讀 206評論 0 0
  • 姓名:李麗 公司:阜陽豹子頭服飾科技有限公司 【日精進打卡第223天】 【知~學(xué)習(xí)】 《六項精進》背誦1遍 《大學(xué)...
    李麗_76c7閱讀 156評論 0 0

友情鏈接更多精彩內(nèi)容