在《 詳解Python拼接字符串的七種方式 》這篇文章里,我提到過,字符串是程序員離不開的事情。后來,我看到了一個英文版本的說法:
There are few guarantees in life: death, taxes, and programmers needing to deal with strings.
它竟然把程序員處理字符串跟死亡大事并列了,可見這是多么命中注定……
回頭看其它文章,我發現這種說法得到了佐證,因為我在無意中已零零碎碎地提及了字符串的很多方面,例如:字符串讀寫文件、字符串打印、字符串不可變性、字符串Intern機制、字符串拼接、 是否會取消字符串 ,等等。而這些,還只能算字符串面目的冰山一角。
既然如此,那干脆再單獨寫寫Python的字符串吧。這篇內容可能會很基(li)礎(lun),并不是什么“騷操作”或“冷知識”,權當是一份溫故而求知新的筆記。
1 Python字符串是什么?
根據維基百科定義:字符串是由零個或多個字符組成的有限序列。而在Python 3中,它有著更明確的意思: 字符串是由Unicode碼點組成的不可變序列 (Strings are immutable sequences of Unicode code points.)
字符串是一種序列,這意味著它具備序列類型都支持的操作:
# 以下的s、t皆表示序列,x表示元素x in s # 若s包含x,返回True,否則返回Falsex not in s # 若s包含x,返回False,否則返回Trues + t # 連接兩個序列s * n # s復制n次s[i] # s的索引第i項s[i:j] # s切片從第i項到第j-1項s[i:j:k] # s切片從第i項到第j-1項,間隔為klen(s) # s的長度min(s) # s的最小元素max(s) # s的最大元素s.index(x) # x的索引位置s.count(x) # s中出現x的總次數
字符串序列還具備一些特有的操作,限于篇幅,按下不表。預告一下,下一篇《 你真的知道Python的字符串怎么用嗎? 》將會展開介紹,敬請期待……
字符串序列是一種不可變序列,這意味著它不能像可變序列一樣,進行就地修改。例如,在字符串“Python”的基礎上拼接“Cat”,得到字符串“PythonCat”,新的字符串是一個獨立的存在,它與基礎字符串“Python”并沒有關聯關系。
basename = "Python"myname = basename + "Cat"id(basename) == id(myname) >>> False
# 作為對比,列表能就地修改baselist = ["Python"]baselist.append("Cat")print(baselist) >>> ['Python', 'Cat']
字符串這種序列與其它序列(如列表、元組)的不同之處在于,它的“元素”限定了只能是Unicode碼點。Unicode碼點是什么呢?簡單理解,就是用Unicode編碼的字符。那字符是什么呢? 字符 是人類書寫系統的各類符號,例如阿拉伯數字、拉丁字母、中文、日文、藏文、標點符號、控制符號(換行符、制表符等)、其它特殊符號(@#¥%$*等等)。那Unicode編碼又是什么呢?Unicode別名是萬國碼、國際碼,它是一種適用性最廣的、將書寫字符編碼為計算機數字的標準。
新聞熱點
疑難解答