輕鬆熊喵喵個人筆記 Python字串(上)

2021-10-21 14:37:21 字數 4092 閱讀 8605

很多人初學程式設計時,總是擔心自己數學不行,潛意識裡認為數學好才能程式設計。實際上大多數程式設計師打交道最多的是「字串」而不是「數字」。因為,程式設計是用來解決現實問題的,因此邏輯思維的重要性遠遠超過數學能力。

字串的本質是:字串行。python 的字串是不可變的,我們無法對原字串做任何修改。但可以將字串的一部分複製到新建立的字串,達到「看起來修改」的效果。

python 不支援單字元型別,單字元也是作為乙個字串使用的。

python3 直接支援 unicode,可以表示世界上任何書面語言的字元。python3 的字元預設就是 16 位 unicode 編碼,ascii 碼是 unicode 編碼的子集。

使用內建函式 ord()可以把字元轉換成對應的 unicode 碼;

使用內建函式 chr()可以把十進位制數字轉換成對應的字元。

>>> ord('a')

65>>> ord('輕')

36731

>>> chr(66)

'b'

>>> ord('松')

26494

我們可以通過單引號或雙引號建立字串。例如:a=』abc』; b=」sxt」

使用兩種引號的好處是可以建立本身就包含引號的字串,而不用使用轉義字元。例如:

>>> a = "i'm a teacher!" >>> print(a)

i'm a teacher!

>>> b = 'my_name is "tom"' >>> print(b)

my_name is "tom"

連續三個單引號或三個雙引號,可以幫助我們建立多行字串。例如:

>>> resume = ''' name="qingsongxiong" company="dancer" age=18

lover="tom"'''

>>> print(resume)

name="qingsongxiong" company="dancer" age=18

lover="tom"

python 允許空字串的存在,不包含任何字元且長度為 0。例如:

>>> c = '' >>> len(c)

0

len()用於計算字串含有多少字元。例如:

>>> d = 'abc 輕鬆熊' >>> len(d)

6

我們可以使用「+特殊字元」,實現某些難以用字元表示的效果。比如:換行等。常見的轉義字元有這些:

【操作】測試轉義字元的使用

>>> a = 'i\nlove\nu' 

>>> a

'i\nlove\nu'

>>> print(a)

ilove

u>>> print('aaabb\cccddd')

aaabbcccddd

可以使用+將多個字串拼接起來。例如:』aa』+ 』bb』 ==>』aabb』。

(1) 如果+兩邊都是字串,則拼接。

(2) 如果+兩邊都是數字,則加法運算。

(3) 如果+兩邊型別不同,則丟擲異常。

可以將多個字面字串直接放到一起實現拼接。例如:』aa』』bb』==>』aabb』

【操作】字串拼接操作

>>> a = 'dancer'+'qingsongxiong' 

>>> a

'dancerqingsongxiong'

>>> b = 'dancer''qingsongxiong'

>>> b

'dancerqingsongxiong'

使用*可以實現字串複製。

【操作】字串複製操作

>>> a = 'dancer'*3

>>> a

'dancerdancerdancer'

我們前面呼叫 print 時,會自動列印乙個換行符。有時,我們不想換行,不想自動新增換行符。我們可以自己通過引數 end = 「任意字串」。實現末尾新增任何內容:

建立原始檔 mypy_06.py:

print("dancer",end=' ')

print("dancer",end='##')

print("dancer")

執行結果:

dancer dancer##dancer
我們可以使用 input()從控制台讀取鍵盤輸入的內容。

>>> myname = input("請輸入名字:")

請輸入名字:輕鬆熊喵喵

>>> myname

'輕鬆熊喵喵'

str()可以幫助我們將其他資料型別轉換為字串。例如:

str(5.20) > 『5.20』 str(3.14e2)>』314.0』 str(true) ==> 『true』

當我們呼叫 print()函式時,直譯器自動呼叫了 str()將非字串的物件轉成了字串。我們在物件導向章節中詳細講解這部分內容。 使用提取字元字串的本質就是字串行,我們可以通過在字串後面新增,在裡面指定偏移量,可以提取該位置的單個字元。

正向搜尋:

最左側第乙個字元,偏移量是 0,第二個偏移量是 1,以此類推。直到 len(str)-1為止。

反向搜尋:

最右側第乙個字元,偏移量是-1,倒數第二個偏移量是-2,以此類推,直到-len(str)為止。

【操作】使用提取字串中的字元

>>> a = 'abcdefghijklmnopqrstuvwxyz' 

>>> a

'abcdefghijklmnopqrstuvwxyz'

>>> a[0]

'a'

>>> a[3]

'd'

>>> a[26-1]

'z'

>>> a[-1]

'z'

>>> a[-26]

'a'

>>> a[-30]

traceback (most recent call last):

file "", line 1, in a[-30]

indexerror: string index out of range

字串是「不可改變」的,我們通過可以獲取字串指定位置的字元,但是我們不能改變字串。我們嘗試改變字串中某個字元,發現報錯了:

>>> a = 'abcdefghijklmnopqrstuvwxyz' >>> a

'abcdefghijklmnopqrstuvwxyz' >>> a[3]='高' traceback (most recent call last):

file "", line 1, in a[3]='高' typeerror: 'str' object does not support item assignment

字串不可改變。但是,我們確實有時候需要替換某些字元。這時,只能通過建立新的字串來實現。

>>> a = 'abcdefghijklmnopqrstuvwxyz' >>> a

'abcdefghijklmnopqrstuvwxyz' >>> a = a.replace('c','輕')

'ab 輕 defghijklmnopqrstuvwxyz'

整個過程中,實際上我們是建立了新的字串物件,並指向了變數 a,而不是修改了以前的字串。 記憶體圖如下:

參考:百戰尚學堂 – 高淇老師

個人Python筆記

vim vimrc set ai 縮近 set expandtab 不用tab set tabstop 4 cp tab.py python可以tab指令碼 usr lib64 python2.6 site packages import tab 程式路徑 usr bin env python 例。...

個人Python學習筆記

python學習筆記 1 使用變數之前 需要對其先賦值 2 變數名可以包含字母 大小寫不同 數字 下劃線 但不能用數字開頭 3 if迴圈語法 if 條件 print else print if 條件 print else print 4 迴圈語法 while迴圈 while 條件 迴圈體 條件為真 ...

Python 個人筆記(一)

使用csv標準庫模組對csv檔案進行讀寫 如下,讀取名為filename的csv檔案。其中第一行為表頭的列名,從第二行開始為資料內容 假設有兩列 import csv with open filename,r as file csv content csv.reader file csv heade...