免費視頻教程!零基礎學Python系列(5) - 數據類型之string(上)

本節開始我們講python的string數據類型。

 

Python的字符串用單引號或者雙引號括起來表示。

字符串由若干個有序字符組成,但是python中的字符串是不能改變的,也就是說我們不能通過索引去改變某個字符的值。比如:str[1]= ‘x’這樣的操作是不被允許的。

 

01

轉義字符

 

所謂轉義字符,就是在其前面增加右斜槓\後,它並不代表其原本的字符含義,而是轉義爲另外的含義。比如‘\n’轉義後表示一個換行符。

 

Python中用到的轉義字符如下表所示:

轉義字符

描述

\(在行尾時)

續行符

\\

反斜槓符號

\'

單引號

\"

雙引號

\a

響鈴

\b

退格(Backspace)

\e

轉義

\000

\n

換行

\v

縱向製表符

\t

橫向製表符

\r

回車

\f

換頁

\oyy

八進制數,yy代表的字符,例如:\o12代表換行

\xyy

十六進制數,yy代表的字符,例如:\x0a代表換行

\other

其它的字符以普通格式輸出

# 轉義字符
str1 = 'hello,\nworld!'
# 尾部的\是續行符,表示下一行也算作本行的內容。續行符後面不能再有任何字符,包括空格和註釋
str2 ='hello,\"world!\"' \
       'I am Tiger.'

print(str1)
print(str2)

輸出爲:

hello,

world!

hello,"world!"I am Tiger.

對於續行符要注意,它後面不能再有任何字符,包括空格和註釋,否則會報錯。

 

 

02

截取

 

字符串截取就是從字符串中獲取部分我們想到的字符,這是用得非常多的一個操作。

Python提供了非常靈活簡單的字符串截取方式。

 

字符串截取語法如下:

變量[頭下標:尾下標]

 

這裏的下標,就是指的某個字符在字符串中對應的索引值。支持雙向索引。我們還是以“hello,world!”這個字符串爲例,其索引如下圖所示:

 

正向索引,從0開始,往後遞增;反向索引,從-1開始,往前遞減。我們只需要明確要截取的子串對應的開始索引和結束索引,即可將其截取出來。

 

這裏需要注意一點,python的截取語法,是“前閉後開”的。其截取的子串包含“頭下標”對應的字符,但是卻不包含“尾下標”對應的字符。這點需要特別注意,容易出錯。

 

比如,我們要截取“hello”這個子串。[0:5]、[0:-7]、[-12:5]、[-12:-7],這幾種方式可以達到相同的效果。

 

下面列出了一些使用的例子,大家可以參考:

# 字符串截取
str3 = 'hello, world!'
sub_str1 = str3[0:5]  # 截取hello
sub_str2 = str3[-6:-1]  # 截取world
print(sub_str1)
print(sub_str2)
print(str3[5])  # 輸出第6個字符
print(str3[:5])  # 輸出第6個字符之前的所有字符
print(str3[5:])  # 輸出第6個字符及以後的所有字符
print(str3[-5:])  # 輸出倒數第5個字符及以後的所有字符

 

03

分割

 

有時候我們需要對一個字符串依照某種規則進行分割,得到若干個子串。比如,我們以逗號爲分割標識,將“hello,world!”分割爲兩個子串“hello”和“world!”。

 

Python提供了split方法實現字符串分割功能,其語法爲:

變量.split("分割標示符號"[分割次數])

 

# 字符串分割 split
sub_str_list =str3.split(',')
print(sub_str_list)

輸出爲:

['hello', ' world!']

 

Split會返回一個列表結構,這個結構裏面存儲了分割之後的所有子串。如果找不到分割標識符號,則返回的列表中只有一個元素,就是原始字符串。

 

看下面的例子,我們指定分割次數後會怎麼樣:

# 字符串分割 split
sub_str_list =str3.split(',')
print(str3.split('o'))
print(str3.split('o', 1))

輸出爲:

['hell', ', w', 'rld!']

['hell', ', world!']

 

如果我們不指定分割次數,會分割爲3個子串。如果我們指定只分割1次,則被分割成了2個子串。

 

Split只能滿足一些簡單固定的分割規則,對於比較複雜的規則,我們可以採用正則表達式,它的功能就非常強大了。後面我們會專門拿一個章節來講解正則表達式,這裏不展開了。

 

04

連接

 

我們通常使用下面兩種方式來實現字符串的連接:

1、通過加號+實現

2、通過join方法實現

語法: str.join(sequence)

sequence -- 要連接的元素序列,可以是元組或者列表。

 

str1.join([s1,s2, s3])

它的連接結果是:

s1-str1-s2-str1-s3

 

如下實例所示:

# 字符串連接
str3=’ hello, world!’
str4 = ' I am Tiger.'
print(str3 + str4 + " Glad to see you ! ")
print(''.join([str3,str4, " Glad to see you ! "]))
print('**'.join(["aa","bb", "cc"]))  #aa**bb**cc

 

輸出爲:

hello, world! I am Tiger. Glad to see you !

hello, world! I am Tiger. Glad to see you !

aa**bb**cc

這兩種方法實現的效果是一樣的,但是他們的實現邏輯卻有很大的區別。基於效率的考慮,如果連接的字符串超過2個,建議儘量採用join方法。

加號連接字符串,每連接一個字符串時,系統會分配一次內存,如果連接N個字符串,那麼需要分配N-1次內存,性能消耗較大。

而join方法,則是在一開始會計算列表中所有字符串的總長度並一次分配好內存,所以它的性能會高一些。

 

下一節我們繼續講string的操作方法。


本節課程的視頻和實例源碼下載方式:點擊->我的主頁,查看個人簡介。

我儘量堅持每日更新一節。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章