字串

文字字串是 Python 中最常用的資料類型。字串前後使用引號('或")來建立。 建立字串變數的方法很簡單,只要為變數分配一個值即可。例如:

var1 = ' Hello World! '
var2 = " Wenzao "
			

查看字串中的值

Python 沒有個別一個字的字元類型,字元類型在 Python 中也是使用字串。 查看子字串,可以使用方括號來截取字串,如下範例:

#!/usr/bin/python3
var1 = ' Hello World! '
var2 = " Wenzao "
print ( " var1[0]: " , var1 [ 0 ] )
print ( " var2[1:5]: " , var2 [ 1 : 5 ] )
			

以上範例執行結果:

var1 [ 0 ]: H
var2 [ 1 : 5 ]: enza
			

字串串接

字串可以截取一部分與其他字串拼接,如下範例:

#!/usr/bin/python3
var1 = ' Hello World! '
print ( " 已更新字串: " , var1 [ : 6 ] + ' Wenzao! ' )
			

以上範例執行結果

已更新字串: Hello Wenzao !
			

跳脫字元

在需要在字元中使用特殊字元時,python用反斜線(\)跳脫字元。如下表:

跳脫字元 描述
\(在行尾時) 續行符號
\\ 反斜線符號
\' 單引號
\" 雙引號
\a 響鈴
\b 退格(Backspace)
\e 轉義
\000
\n 換行
\v 縱向製表符
\t 橫向製表符
\r Enter
\f 換頁
\oyy 八進制數,yy代表的字元,例如:\o12代表換行
\xyy 十六進制數,yy代表的字元,例如:\x0a代表換行
\other 其它的字元以普通格式輸出

字串運算符號

下表範例變數 a 值為字串 "Hello", b 變數值為"Python"

運算符號 描述 範例
+ 字串連接 a + b 輸出結果: HelloPython
* 重複輸出字串 a*2 輸出結果:HelloHello
[] 通過索引獲取字串中字元 a[1]輸出結果e
[ : ] 截取字串中的一部分,遵循左閉右開原則,str[0:2]是不包含第3個字元的。 a[1:4] 輸出結果 ell
in 成員運算符號 - 如果字串中包含給定的字元, 返回 True 'H' in a 輸出結果 True
not in 成員運算符號 - 如果字串中不包含給定的字元返回True 'M' not in a 輸出結果 True
r/R 原始字串:所有的字串都是直接按照字面的意思來使用,沒有特殊或不能列印的字元。
原始字串除在字串的第一個引號前加上字母r(可以大小寫)以外,與普通字串有著幾乎完全相同的語法。
print ( r '\n' )
print ( R '\n' )
% 字串格式化 參見以下表格

範例

#!/usr/bin/python3
a = "Hello"
b = "Python"
print ( " a + b輸出結果:" , a + b )
print ( " a * 2輸出結果:" , a * 2 )
print ( " a[1]輸出結果:" , a[1] )
print ( " a[1:4]輸出結果:" , a[1 : 4] )
if ( "H" in a ) :
	print ( "H在變數a中" )
else:
	print ( "H不在變數a中" )
if ( "M" not in a ) :
	print ( "M不在變數a中" )
else :
	print ( " M在變數a中" )
print ( r ' \n ')
print ( R ' \n ' )
			

以上範例輸出結果為:

a + b 輸出結果:HelloPython
a * 2 輸出結果:HelloHello
a [ 1 ] 輸出結果:e
a [ 1 : 4 ] 輸出結果:ell
H在變數a中
M不在變數a中
\n  \n
	

三引號

python三引號允許一個字串跨多行,字串中可以包含換行符號、表格符號以及其他特殊符號。實例如下

#!/usr/bin/python3
para_str = """
這是一個多行字串的實例
多行字串可以使用製表符TAB ( \t )。
也可以使用換行符[ \n ]。
"""
print ( para_str )
			

以上實例執行結果為:

這是一個多行字串的實例
多行字串可以使用製表符  TAB ( )。
也可以使用換行符[ ]。

三引號讓程式從引號和特殊字串的泥潭裡面解脫出來,自始至終保持一小塊字串的格式,即是所謂的WYSIWYG(所見即所得)格式的。

一個典型的用法是,需要HTML或者SQL語法時,這時用字串組合,特殊字串轉義將會非常的繁瑣。

errHTML = '''
<HTML>
<HEAD>
	<TITLE> Friends CGI Demo</TITLE>
</HEAD>
<BODY>
	<H3>ERROR</H3>
	<B>%s</B>
	<P> <FORM >
		<INPUT TYPE=button VALUE=Back ONCLICK="window.history.back()">
	</FORM>
</BODY>
</HTML>
'''
cursor.execute ( '''
CREATE TABLE users (
	login VARCHAR( 8),
	uid INTEGER,
	prid INTEGER)
''' )
			

原始字串

在Python的string前面加上‘r’, 是為了告訴編譯器這個string是個raw string,不要轉義跳脫字元'\' 。 例如,\n 在raw string中,是兩個字元,\和n, 而不會轉義為換行字元。由於正則表示式(regular express)和 \ 會有衝突,因此,當一個字串使用了正則表示式後,最好在前面加上'r'。 .

my_raw_str =r’Hello\nWorld’
print(my_raw_str)
# 執行結果: Hello\nWorld
			

Unicode 字串

在 Python2 中,普通字串是以 8 位 ASCII 碼儲存,而 Unicode 字串則存為 16 位 unicode 字串, 這樣能夠表示更多的字符集。使用的語法是在字串前面加上前綴u

在 Python3 中,所有的字串都是 Unicode 字串。

字串內建函式

序號 方法 描述
1 capitalize() 將字串的第一個字符轉換為大寫
2 center(width, fillchar) 返回一個指定的寬度width 居中的字串,fillchar 為填充的字符,默認為空格。
3 count(str, beg= 0,end=len(string)) 返回str 在string 裡面出現的次數,如果beg 或者end 指定則返回指定範圍內str 出現的次數
4 bytes.decode(encoding="utf-8", errors="strict") Python3 中沒有 decode 方法,但我們可以使用 bytes 對象的 decode() 方法來解碼給定的 bytes 對象,這個bytes 對象可以由str.encode() 來編碼返回。
5 encode(encoding='UTF-8',errors='strict') 以encoding 指定的編碼格式編碼字串,如果出錯默認報一個ValueError 的異常,除非errors 指定的是'ignore'或者'replace'
6 endswith(suffix, beg=0, end=len(string)) 檢查字串是否以obj結束,如果beg或者end指定則檢查指定的範圍內是否以obj結束,如果是,返回True,否則返回False.
7 expandtabs(tabsize=8) 把字串string 中的tab 符號轉為空格,tab 符號默認的空格數是8 。
8

find(str, beg=0 end=len(string))

檢測str 是否包含在字串中,如果指定範圍beg 和end ,則檢查是否包含在指定範圍內,如果包含返回開始的索引值,否則返回-1
9

index(str, beg=0, end=len(string))

跟find()方法一樣,只不過如果str不在字串中會報一個異常.
10 isalnum() 如果字串至少有一個字符並且所有字符都是字母或數字則返回True,否則返回False
11 isalpha() 如果字串至少有一個字符並且所有字符都是字母則返回True, 否則返回False
12 isdigit() 如果字串只包含數字則返回True 否則返回False..
13 islower() 如果字串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是小寫,則返回True,否則返回False
14 isnumeric() 如果字串中只包含數字字符,則返回True,否則返回False
15 isspace() 如果字串中只包含空白,則返回True,否則返回False.
16 istitle() 如果字串是標題化的(見title())則返回True,否則返回False
17 isupper() 如果字串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是大寫,則返回True,否則返回False
18 join(seq) 以指定字串作為分隔符,將seq 中所有的元素(的字串表示)合併為一個新的字串
19 len(string) 返回字串長度
20 ljust(width[, fillchar]) 返回一個原字串左對齊,並使用fillchar 填充至長度width 的新字串,fillchar 默認為空格。
21 lower() 轉換字串中所有大寫字符為小寫.
22 lstrip() 截掉字串左邊的空格或指定字符。
23 maketrans() 創建字符映射的轉換錶,對於接受兩個參數的最簡單的調用方式,第一個參數是字串,表示需要轉換的字符,第二個參數也是字串表示轉換的目標。
24 max(str) 返回字串str 中最大的字母。
25 min(str) 返回字串str 中最小的字母。
26 replace(old, new [, max]) 把將字串中的str1 替換成str2,如果max 指定,則替換不超過max 次。
27 rfind(str, beg=0,end=len(string)) 類似於find()函數,不過是從右邊開始查找.
28 rindex( str, beg=0, end=len(string)) 類似於index(),不過是從右邊開始.
29 rjust(width,[, fillchar]) 返回一個原字串右對齊,並使用fillchar(默認空格)填充至長度width 的新字串
30 rstrip() 刪除字串字串末尾的空格.
31 split(str="", num=string.count(str)) num=string.count(str)) 以str 為分隔符截取字串,如果num 有指定值,則僅截取num 個子字串
32 splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數keepends 為False,不包含換行符,如果為True,則保留換行符。
33 startswith(str, beg=0,end=len(string)) 檢查字串是否是以obj 開頭,是則返回True,否則返回False。如果beg 和end 指定值,則在指定範圍內檢查。
34 strip([chars]) 在字串上執行lstrip()和rstrip()
35 swapcase() 將字串中大寫轉換為小寫,小寫轉換為大寫
36 title() 返回"標題化"的字串,就是說所有單詞都是以大寫開​​始,其餘字母均為小寫(見istitle())
37 translate(table, deletechars="") 根據str 給出的表(包含256 個字符)轉換string 的字符, 要過濾掉的字符放到deletechars 參數中
38 upper() 轉換字串中的小寫字母為大寫
39 zfill(width) 返回長度為width 的字串,原字串右對齊,前面填充0
40 isdecimal() 檢查字串是否只包含十進製字符,如果是返回true,否則返回false。