Python教程(2.4)——字符串
2.2節講過,Python中有字符串類型。在Python中,字符串用‘或"括起,例如‘abc‘、"qwerty"等都是字符串。註意‘和"並不是字符串的內容。
ASCII(American Standard Code for Information Interchange)碼
電腦可以存儲數字,那字符怎麽辦?答案是可以給字符編碼,這樣只要存儲數字,顯示時轉成字符就可以了。由於電腦是美國人發明的,因此電腦最初只有128個(不是很確定)字符被編碼,叫做ASCII碼,範圍為0~127。例如字母A的ASCII碼為65,字母d的ASCII碼為100。
一個8位無符號整數的存儲範圍是0~255,因此存儲ASCII字符只需要一個字節。
此外,還有擴展的ASCII編碼,範圍為0~255。前128個字符是一樣的,後128個則是例如a、é這樣的帶有註音符號的字符。這裏不詳細介紹。
Unicode
因為世界上不僅有英語,還有其它語言,其它語言中又有更多的字符。因此ASCII碼不能滿足要求,需要一個新的字符集——Unicode。Unicode包含了世界上大多數語言的字符。例如中文的“我”字,Unicode碼為25105,“文”字是25991。
一般字符需要2個字節進行存儲,很偏僻的就需要4個字節。
字符串和字符串常量
根據字符的概念,字符串可以被重新定義成若幹字符的組合。Python中的字符串類型為str,采用Unicode編碼。因此裏面可以使用Unicode字符(例如中文)。Python中沒有
字符串常量就是指像"python"、‘globe‘這些不變的字符串,與變量相對。
轉義字符/序列(escape character/sequence)
字符串裏不僅能包含普通字符,還可以包含特殊字符。這些特殊字符就需要通過特殊方法表示出來,這種字符叫做轉義字符。在Python中,轉義字符以\開頭。因為轉義字符在代碼中需要用兩個字符表示,也叫做轉義序列。
在字符串中,你可能想換行,這時就可以使用\n轉義字符;你可能想要tab,這時你可以直接打tab或使用\t轉義字符(推薦後者)。
例如:
>>> print(‘first line\nsecond line\nthird line‘) first line second line third line
與下面:
print(‘first line‘) print(‘second line‘) print(‘third line‘)
或下面:
>>> print(‘first line‘) first line >>> print(‘second line‘) second line >>> print(‘third line‘) third line
是相同的。
對於\t也是一樣的:
>>> print(‘1\t2\t3\t4\tend‘) 1 2 3 4 end
還有一些容易造成歧義的字符,例如‘、"和\(‘和"會被以為成字符串的開始或結束,\會認為是轉義符號),也需要使用轉義序列\‘、\"和\\才能輸出:
>>> print(‘You must use \\\‘, \\\" and \\\\ to display \‘, \" and \\.‘) You must use \‘, \" and \\ to display ‘, " and \.
當然,對於只含有‘的字符串,可以用"括起;對於只含有"的字符串,可以用‘括起。例如:
>>> print(‘"All right", he says.‘) "All right", he says. >>> print("I‘m OK.") I‘m OK.
至於既有‘又有"的字符串就只能用轉義序列或者(下文即將講到的)原始字符串了。
原始字符串(raw string)
Python支持原始字符串。這種字符串內的字符都是原始的,沒有轉義。轉義字符串用r‘ ‘括起,例如:
>>> r‘this \n does not mean newline‘ ‘this \\n does not mean newline‘
不過註意,Python在不用print()顯示字符串時,是會加上轉義符號\的。
多行字符串
有時候,字符串裏有很多換行符不夠方便,這時可以使用多行字符串。多行字符串用‘‘‘ ‘‘‘或""" """(每邊3個‘或3個")括起。例如:
>>> print(‘‘‘first line ... second line ... third line‘‘‘) first line second line third line
註意輸入多行字符串時,在字符串結束之前,命令提示符也會變成...。
在多行字符串一行結尾加\可以防止換行:
>>> print(‘‘‘... first line ... second line ... third line... ‘‘‘)
first line
second line
third line
字符串操作
計算長度
使用len()函數計算字符串長度。例如:
>>> len(‘GoldenGlobalView‘) 16 >>> s = ‘internationalization‘ >>> len(s) 20 >>> len(‘Unicode字符串‘) 10
獲取字符串中的某個字符
使用string[index]可以獲取索引為index的字符:
>>> s = ‘Python Tutorial‘ >>> s[0] ‘P‘ >>> s[5] ‘n‘ >>> s[12] ‘i‘
註意索引從0開始,0索引對應第一個字符,1對應第二個,2對應第三個,等等。
如果索引太大,就會出現錯誤:
>>> s[100] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range
註意雖然這樣可以獲取字符串中的某個字符,但是獲取的仍然是字符串類型,只是長度為1。
拼接字符串常量
兩個字符串常量可以直接寫在一起,進行拼接(concatenation):
>>> ‘class‘‘mate‘ ‘classmate‘ >>> "pyt""hon" ‘python‘ >>> ‘note‘"book" ‘notebook‘
註意兩個字符串可以一個用‘括起,一個用"括起。
拼接字符串
如果是一個類型為str的變量和一個字符串常量,就不能直接寫在一起進行拼接了:
>>> s = ‘class‘ >>> s ‘mate‘ File "<stdin>", line 1 s ‘mate‘ ^ SyntaxError: invalid syntax
這時需要用+運算符:
>>> s = ‘class‘ >>> s + ‘mate‘ ‘classmate‘
+運算符也可以用於兩個str變量之間:
>>> s1 = ‘class‘ >>> s2 = ‘mate‘ >>> s1 + s2 ‘classmate‘
(未完)
Python教程(2.4)——字符串