Python 數(shù)據(jù)類型詳細(xì)篇:字符串
這節(jié)課我們來學(xué)習(xí)下 Python 基本數(shù)據(jù)類型中的字符串類型,字符串類型在實(shí)際的開發(fā)中是一個(gè)經(jīng)常會(huì)用到的數(shù)據(jù)類型,比較重要。下面我們一起來看一下:
1. 簡(jiǎn)介
字符串類型的數(shù)據(jù)表示一段文本,使用單引號(hào)或者雙引號(hào)創(chuàng)建:
- 單引號(hào)字符串 ‘hello’
- 雙引號(hào)字符串 “world”
在 python 中使用字符串的例子如下:
>>> x = 'hello'
>>> x
'hello'
>>> y = "world"
>>> y
'world'
- 在第 1 行,創(chuàng)建了使用單引號(hào)字符串 hello,并將值賦給變量 x
- 在第 2 行,顯示變量 x 的值為 ‘hello’
- 在第 3 行,創(chuàng)建了使用雙引號(hào)字符串 world,并將值賦給變量 y
- 在第 4 行,顯示變量 y 的值為 ‘world’
使用單引號(hào)或者雙引號(hào)創(chuàng)建的字符串只能在一行,而使用三引號(hào)允許一個(gè)跨多行的字符串。
使用 3 個(gè)單引號(hào)創(chuàng)建的多行字符串示例如下:
s = '''line 1
line 2
line 3'''
print(s)
使用 3 個(gè)雙引號(hào)創(chuàng)建的多行字符串示例如下:
s = """line 1
line 2
line 3"""
print(s)
以上程序的輸出如下:
line 1
line 2
line 3
2. 常見運(yùn)算操作
本節(jié)介紹對(duì)字符的最常見的幾種運(yùn)算操作,包括:
2.1 運(yùn)算符 +
使用運(yùn)算符 + 連接兩個(gè)字符串,示例如下:
>>> 'Hello' + 'World'
>>> 'HelloWorld'
>>> 'Hello' + ' ' + 'World'
>>> 'Hello World'
- 在第 1 行,使用運(yùn)算符 + 連接兩個(gè)字符串
- 在第 3 行,使用運(yùn)算符 + 連接多個(gè)字符串
2.2 運(yùn)算符 *
使用運(yùn)算符 * 重復(fù)輸出字符串,示例如下:
>>> 'hello' * 2
'hellohello'
>>> 'hello' * 3
'hellohellohello'
- 在第 1 行,使用運(yùn)算符 * 將字符串重復(fù)兩次
- 在第 3 行,使用運(yùn)算符 + 將字符串重復(fù)三次
2.3 函數(shù) len
使用函數(shù) len 獲取字符串的長(zhǎng)度,示例如下:
>>> len('abc')
3
>>> len('imooc')
5
2.4 索引 []
通過索引 [] 獲取字符串中指定位置的字符,示例如下:
>>> s = 'imooc'
>>> s[0]
'i'
>>> s[1]
'm'
>>> s[2]
'o'
>>> s[3]
'o'
>>> s[4]
'c'
- 在 Python 中,單個(gè)字符也被當(dāng)作字符串來處理,即該字符串只包含一個(gè)字符
- 在第 2 行,獲取字符串 s 的第 0 個(gè)字符 ‘i’
- 在第 4 行,獲取字符串 s 的第 1 個(gè)字符 ‘m’
2.5 索引 [:]
在 Python 中,使用語法 string[start:end],獲取字符串 string 中在 [start, end) 范圍的子字符串。注意范圍 [start, end) 包含 start,不包含 end。舉例如下:
>>> s = 'imooc'
>>> s[1]
'm'
>>> s[2]
'o'
>>> s[3]
'o'
>>> s[1:4]
'moo'
- 在第 2 行,獲取字符串 s 的第 1 個(gè)字符 ‘m’
- 在第 4 行,獲取字符串 s 的第 2 個(gè)字符 ‘o’
- 在第 6 行,獲取字符串 s 的第 3 個(gè)字符 ‘o’
- 在第 8 行,獲取字符串 s 中從 1 開始、到 4 結(jié)束的字符串 ‘mooc’,使用 s[1:4] 表示該范圍,注意該范圍包括字符串的第 1 個(gè)字符、不包括第 4 個(gè)字符。
2.6 關(guān)鍵字 in
通過關(guān)鍵字 in 檢查字符串中是否包含指定字符串,示例如下:
>>> 'mooc' in 'imooc'
True
>>> 'mook' not in 'imooc'
True
- 在第 1 行,檢測(cè)字符串 ‘mooc’ 在 字符串 ‘imooc’ 中
- 在第 3 行,檢測(cè)字符串 ‘mook’ 不在 字符串 ‘imooc’ 中
3. 常用字符串方法
3.1 capitalize() 方法
capitalize() 方法把字符串的第一個(gè)字符大寫,示例如下:
>>> text = 'abc'
>>> text.capitalize()
'Abc'
3.2 count() 方法
count() 方法統(tǒng)計(jì)字符串出現(xiàn)的次數(shù),示例如下:
>>> text = 'abc abc'
>>> text.count('abc')
2
3.3 startswith(target) 方法
startswith(target) 方法檢查字符串是否是以字符串 target 開頭,示例如下:
>>> text = 'abc'
>>> text.startswith('ab')
True
>>> text.startswith('bb')
False
3.4 endswith(target) 方法
endswith(target) 方法檢查字符串是否是以字符串 target 結(jié)尾,示例如下:
>>> text = 'abc'
>>> text.endsswith('bc')
True
>>> text.endsswith('cc')
False
3.5 lower() 方法
lower() 方法將字符串中所有大寫字符轉(zhuǎn)換為小寫,示例如下:
>>> text = 'ABC'
>>> text.lower()
'abc'
3.6 upper() 方法
upper() 方法將字符串中所有小寫字符轉(zhuǎn)換為大寫,示例如下:
>>> text = 'abc'
>>> text.upper()
'ABC'
3.7 islower() 方法
如果字符串中所有字符是小寫則為真,否則為假,示例如下:
>>> text = 'abc'
>>> text.islower()
True
3.8 isupper() 方法
如果字符串中所有字符是大寫則為真,否則為假,示例如下:
>>> text = 'ABC'
>>> text.isupper()
True
3.9 find(target) 方法
檢查是否包含指定字符串 target,如果包含字符串 target 則返回開始的索引值,否則返回 -1,示例如下:
>>> text = 'imooc'
>>> text.find('oo')
2
>>> text.find('oop')
-1
- 在第 2 行,查找字符串 ‘imooc’ 是否包含字符串 ‘oo’
- 在第 3 行,字符串 ‘oo’ 在字符串 ‘imooc’ 中的起始位置是 2,因此返回 2
- 在第 2 行,查找字符串 ‘imooc’ 是否包含字符串 ‘oop’
- 在第 5 行,字符串 ‘imooc’ 中不包含字符串 ‘oop’,因此返回 -1
3.10 split() 方法
使用空格將字符串分割為多個(gè)單詞,返回一個(gè)列表,示例如下:
>>> text = 'hello world'
>>> text.split()
['hello', 'world']
缺省情況下,使用空格將字符串分割為多個(gè)單詞,可以在 split() 方法中指定分隔符,示例如下:
>>> text = 'hello:world'
>>> text.split(':')
['hello', 'world']
4. 轉(zhuǎn)義字符
在 Python 中使用反斜杠 \ 加字母的組合來表示一些特殊字符,例如:\n 表示換行,\ 之后的字符 n 的含義已經(jīng)不再是原來 ASCII 字符的含義了,所以被稱為轉(zhuǎn)義字符。
常用的轉(zhuǎn)義字符如下所示:
轉(zhuǎn)義字符 | 描述 |
---|---|
\t | 制表 |
\n | 換行 |
\’ | ’ |
\" | " |
\\ | \ |
- 使用 \t 的示例
>>> print('a\tb\tc')
a b c
>>> print('aa\tbb\tcc')
aa bb cc
\t 表示跳到下一個(gè)制表符位置,可以使得輸出縱向?qū)R。
- 使用 \n 的示例
>>> print('a\nb')
a
b
- 使用 \’ 的示例
>>> print('\'')
'
在單引號(hào)字符串中使用 \’ 表示單引號(hào)
- 使用 \" 的示例
>>> print("\"")
"
在雙引號(hào)字符串中使用 \" 表示雙引號(hào)
- 使用 \\ 的示例
>>> print('\\')
\
在字符串中使用 ‘\’ 表示轉(zhuǎn)義字符 \
5. 字符串格式化
5.1 什么是字符串格式化
通過使用字符串 + 連接運(yùn)算可以將多個(gè)字符串拼接起來,例如:
>>> name = 'tom'
>>> city = 'nanjing'
>>> 'My name is ' + name + ', I live in ' + city + '.'
'My name is tom, I live in beijing.'
在第 3 行,使用字符串 + 將以下 5 個(gè)字符串拼接起來:
- 'My name is ’
- name
- ', I live in ’
- city
- ‘.’
最終得到字符串 ‘My name is tom, I live in beijing’,像這樣將多個(gè)字符串拼接起來的表達(dá)式非常不直觀,Python 提供了字符串格式化用于簡(jiǎn)化拼接多個(gè)字符串。
5.2 format 方法
使用字符串提供的 format 方法完成上述的拼接工作,如下所示:
>>> name = 'tom'
>>> city = 'beijing'
>>> text = 'My name is {}, I live in city {}.'
>>> text.format(name, city)
'My name is tom, I live in beijing.'
- 在第 1 行,創(chuàng)建變量 name
- 在第 2 行,創(chuàng)建變量 city
- 在第 3 行,創(chuàng)建字符串 text,字符串中 {} 被稱為占位符,text 中有兩個(gè)占位符
- 在第 4 行,調(diào)用字符串 text 的 format 方法,該方法有兩個(gè)參數(shù):name 和 city
- 在第 5 行,將 text 中的兩個(gè)占位符 {} 替換為這兩個(gè)參數(shù),得到最終的結(jié)果 ‘My name is tom, I live in beijing.’
與上一節(jié)使用 + 運(yùn)算連接相比,格式化字符串顯著的提高了程序的可讀性。
5.3 % 運(yùn)算符
也可以使用運(yùn)算符 % 完成上述的拼接工作,如下所示:
>>> name = 'tom'
>>> city = 'beijing'
>>> text = 'My name is %s, I live in city %s.'
>>> text % (name, city)
'My name is tom, I live in beijing.'
- 在第 1 行,創(chuàng)建變量 name
- 在第 2 行,創(chuàng)建變量 city
- 在第 3 行,創(chuàng)建字符串 text,字符串中 %s 被稱為占位符,text 中有兩個(gè)占位符
- 在第 4 行,使用運(yùn)算符 % 進(jìn)行字符串格式化。運(yùn)算符 % 有兩個(gè)操作數(shù),左邊的操作數(shù)是字符串變量 text,右邊的操作數(shù)是一個(gè)元組,元組中包含兩個(gè)參數(shù):name 和 city
- 在第 5 行,將 text 中的兩個(gè)占位符 %s 替換為這兩個(gè)參數(shù),得到最終的結(jié)果 ‘My name is tom, I live in beijing.’
在實(shí)踐中,通常直接將字符串與參數(shù)使用運(yùn)算符 % 格式化,如下所示:
>>> name = 'tom'
>>> city = 'beijing'
>>> 'My name is %s, I live in city %s.' % (name, city)
'My name is tom, I live in beijing.'
如果有多個(gè)參數(shù),需要將所有的參數(shù)保存在一個(gè)元組中;如果只有一個(gè)參數(shù),可以不用保存在元組中,舉例如下:
>>> name = 'tom'
>>> 'My name is %s.' % name
'My name is tom.'
- 在第 2 行,只有一個(gè)參數(shù),可以不用將參數(shù)封裝在元組中
5.4 占位符
% 是一個(gè)特殊的符號(hào),后面跟著一個(gè)字符用于說明參數(shù)的類型:
- %s 表示字符串
- %d 表示整數(shù)
- %f 表示浮點(diǎn)數(shù)
有多種類型的占位符,初學(xué)時(shí)需要掌握如下常用的占位符:
符號(hào) | 描述 |
---|---|
%% | 用于表示 % |
%c | 格式化字符及其ASCII碼 |
%s | 格式化字符串 |
%d | 格式化整數(shù) |
%f | 格式化浮點(diǎn)數(shù) |
- %s 用于格式化字符串
>>> name = 'tom'
>>> 'name is %s' % name
'name is tom'
- %d 用于格式化整數(shù)
>>> integer = 123
>>> 'integer is %d' % integer
'integer is 123'
- %f 用于格式化浮點(diǎn)數(shù)
>>> float = 123.456
>>> 'float is %f' % float
'float is 123.456000'
- %% 用于表示字符 % 本身
>>> a = 3
>>> b = 2
>>> c = a % b
>>> '%d %% %d = %d' % (a, b, c)
3 % 2 = 1
%% 是一個(gè)特殊的占位符,表示字符 % 本身。
5.5 print 方法
在實(shí)踐中,通常使用 print 方法輸出將格式化后的字符串,示例如下:
>>> name = 'tom'
>>> city = 'beijing'
>>> print('My name is %s' % name)
My name is tom
>>> print('My name is %s, I live in city %s.' % (name, city))
My name is tom, I live in beijing.
6. 小結(jié)
字符串和數(shù)值一樣,同樣有基本的運(yùn)算方式,但是最終得到的結(jié)果形式和數(shù)值卻略有不同,大家在使用的時(shí)候要注意這一點(diǎn)。字符串的常用方法也需要大家多多練習(xí)和使用,可以把正文中的代碼多敲幾遍,一個(gè)好的程序員就是要多敲代碼才能成長(zhǎng)。