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