天天看點

【Python】 5/17:字元串與序列

參考文章:

http://c.biancheng.net/view/2174.html

https://www.runoob.com/python3/python3-string.html

https://www.cnblogs.com/diaosir/p/6575891.html

字元串

一、定義

字元串的意思就是“一串字元”,比如“Hello,CXY”是一個字元串,“How are you?”也是一個字元串。

Python 要求字元串必須使用引号括起來,使用單引号也行,使用雙引号也行,隻要兩邊的引号能配對即可。

t1 = 'i love Python!'
print(t1, type(t1))
# i love Python! <class 'str'>

t2 = "I love Python!"
print(t2, type(t2))
# I love Python! <class 'str'>

print(5 + 8)  # 13
print('5' + '8')  # 58
           

如果字元串内容本身包含了單引号或雙引号,此時就需要進行特殊處理:

  1. 使用不同的引号将字元串括起來。
  2. 對引号進行轉義。
str3 = 'I'm a coder'
           

此時 Python 會将字元串中的單引号與第一個單引号配對,這樣就會把 ‘I’ 當成字元串,而後面的 m a coder’ 就變成了多餘的内容,進而導緻文法錯誤。

可改成:

假如字元串内容本身包含雙引号,則可使用單引号将字有串括起來:

或者使用轉義字元。Python 允許使用反斜線(\)将字元串中的特殊字元進行轉義。例如下圖:

tips:不要與除号 / 混淆哦~

  • python 常用轉義字元
【Python】 5/17:字元串與序列

原始字元串隻需要在字元串前邊加一個英文字母 r 即可。

print(r'C:\Program Files\Intel\Wifi\Help')  
# C:\Program Files\Intel\Wifi\Help
           

三引号(’’‘xxx’’'或""“xxx”"")包圍的字元完全是字面符号,包圍什麼就得到什麼,包括換行,且不會進行任何轉義、替換等。使用這種塊字元串的方式,在輸入需要換行的字元串時非常友善。

str6 = """aaa
aaa"""
#輸出:aaa
#aaa          (保持換行)
           
  • Python字元串運算符
【Python】 5/17:字元串與序列
  • Python字元串格式化

Python 支援格式化字元串的輸出 。盡管這樣可能會用到非常複雜的表達式,但最基本的用法是将一個值插入到一個有字元串格式符 %s 的字元串中。

在 Python 中,字元串格式化使用與 C 中 sprintf 函數一樣的文法。

print ("我叫 %s 今年 %d 歲!" % ('小明', 10))
#輸出結果:我叫 小明 今年 10 歲!
           
【Python】 5/17:字元串與序列
【Python】 5/17:字元串與序列
  • Python 的字元串内建函數
    【Python】 5/17:字元串與序列
    【Python】 5/17:字元串與序列
    【Python】 5/17:字元串與序列
    【Python】 5/17:字元串與序列
    【Python】 5/17:字元串與序列
    【Python】 5/17:字元串與序列

序列

常見序列類型包括字元串(普通字元串和unicode字元串),清單和元組.所謂序列,即成員有序排列,可通過下标通路。

常用操作:

  1. 索引

序列中的元素都是有序的、擁有自己編号(從0開始),我們可以通過索引得到序列中對應的元素:

>>> s = 'abcdefg'
>>> s[0]
'a'
>>> s[1]
'b'
>>> s[-1]
'g'
>>> s[::-1]
'gfedcba'
           

索引也可以為負值,負數索引表示從右往左開始計數,最後一個元素索引為-1,倒數第二為-2,以此類推.

2. 切片(分片)

使用索引可以擷取單個元素,使用分片可以擷取序列中指定範圍内的元素.切片操作符[:]/[::]

obj[start_index:end_index] 表示擷取從start_index開始到end_index-1結束所有索引對應的元素
           

切片中冒号左邊索引對應的元素晚于右邊索引對應元素出現時,傳回結果是[]

>>> l
[1, 2, 3, 4, 5, 6, 7]
>>> 
>>> l[0:5]
[1, 2, 3, 4, 5]
>>> l[4:6]
[5, 6]
>>> l[2:2]
[]
>>> l[-3:-1]          
[5, 6]
>>> l[-1:-3]
[]
           
obj[:end_index] 表示擷取從0開始到end_index-1結束所有索引對應的元素  
obj[start_index:] 表示擷取start_index對應的元素以及後面所有的元素
obj[:] 表示擷取所有的元素
           

[start_index:end_index:step] (step>0)表示從start_index索引對應的元素開始每step個元素取出來一個,直到取到end_index對應的元素結束(step預設為1)

>>> ll[0:9:]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ll[0:9:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ll[0:9:2]
[1, 3, 5, 7, 9]
>>> ll[::4]
[1, 5, 9]
>>> s[::-2]
'geca'
>>> 
           

[start_index:end_index:step] (step<0)表示從右到左反向提取元素,即從start_index索引對應的元素開始反向每step個元素取出來一個,直到取到end_index+1對應的元素結束.

此時start_index對應的元素要晚于end_index對應的元素出現,否則傳回[]

>>> ll[0:6:-2]
[]
>>> ll[9:6:-2]
[10, 8]
>>> ll[6:9:-2]
[]
>>> ll[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> ll[:2:-3]
[10, 7, 4]
>>> ll[9:2:-1]
[10, 9, 8, 7, 6, 5, 4]