python中字符串,列表,元組都是常用的數據類型,且都屬於序列類型
從字符串說起,顧名思義字符串就是指一串字符,字符通常包括字母,數字,符號。在python中我們使用引號('或")來創建字符串。即創建字符串只要為變量分配一個值即可。例如:
a = 'hello ,world!'
b = "hello ,world!"
當所要創建的字符串中包含'或"的時候,例如要創建字符串 I love 'python'.此時由如下幾種處理方式
a = ' I love "python" '
b = " I love 'python' "
c = ' I love \'python\' '
不難看出當字符串中中包含'或"中的一種時,可以通過另一種作為限定字符串范圍的方式。
若字符串中同時存在單引號'和雙引號"的時候,因為 ' 和 " 會引起歧義,故我們在它前面插入一個\
表示這是一個普通字符,不代表字符串的起始。
至此我們引入一個概念——轉義字符:即在字符前加上\,字符就不再代表字符本身的意思,而是被賦予了一種新的解釋或功能。
常見的轉義字符有:
\n | 換行 | \\ | 代表反斜杠 |
\t | 水平制表符 | \' | 代表一個單引號,同理"也可以這樣的方式輸出 |
\b | 退格 | \0 | 代表一個空字符 |
\r | 回車 | \a | 代表系統提示音 |
注:在python 中若要去掉字符串的轉義,只需要在字符串前面加上r即可,例如:
>>>a = r'\n\t\b\r\\\'\0\a' >>>print(a)
\n\t\b\r\\\'\0\a
字符串作為最常用的數據類型,工作中對其進行相關操作自然是開發者的家常便飯。首先從字符串拼接和格式化說起。
在python種如何將多個字符串拼接起來呢?大致有一下四種方式可以實現:
- 使用 +
這是最直接也是最簡單的方式,直接通過+實現對字符串的拼接,實例如下
>>>a = 'abc' >>>b = 'def' >>>a + b 'abcdef'
2.格式化字符串
Python 支持格式化字符串的輸出 。盡管這樣可能會用到非常復雜的表達式,但最基本的用法是將一個值插入到一個有字符串格式符 %s 的字符串中。
在python 中字符串格式化的使用實例如下:
>>> a = 'python' >>> b = 'I love %s'%a >>> print(b) I love python
其他常用的格式化字符串符號:
%d | 格式化整數 | %o | 格式化無符號八進制數 |
%f | 格式化浮點數 | %x | 格式化無符號16進制數 |
%c | 格式化字符及其ASCII碼 | %e | 科學計數法格式化浮點數 |
格式化操作符輔助指令:
* | 定義寬度或者小數點精度 | 0 | 顯示的數字前面填充'0'而不是默認的空格 |
- | 左對齊 | (var) | 映射變量(字典參數) |
+ | 在正數前面顯示加號( + ) | % | '%%'輸出一個單一的'%' |
# | 在八進制數前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決於用的是'x'還是'X') | m.n | m 是顯示的最小總寬度,n 是小數點后的位數 |
實例:
>>> print('%-56.3f'%10.1)#左對齊,總寬度6保留小數點后3位數 10.100 >>> print('%5s'%'ab')#總寬度5,默認右對齊 ab
3.使用join()方法
python中定義了多種字符串方法,熟練的運用這些方法可以方便我們對字符串進行處理。其中join()方法就可以用來完成字符串的拼接,實例如下:
>>> print(''.join('a'))
a
>>> print(':'.join(['a','b','c']))
a:b:c
需要強調的是,.join()方法的作用是連接字符串。將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個新的字符串。故.join()括號內的內容即對象不能是數值類型,且只能是一個對象因此若有多個內容必須寫成列表或者元組的形式,否則會報錯,實例如下
>>> print(''.join('a','b','c')) Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> print(''.join('a','b','c')) TypeError: join() takes exactly one argument (3 given)#括號內的內容必須是一個對象
4.使用format格式化函數
Python2.6 開始,新增了一種格式化字符串的函數 str.format(),它增強了字符串格式化的功能。基本語法是通過 {} 和 : 來代替以前的 % 。format 函數可以接受不限個參數,位置可以不按順序,並支持設置參數。具體實例如下:
>>> print('{}{}{}'.format(1,'a',(1,2,3)))
1a(1, 2, 3)
>>> print('{},{},{}'.format(1,'a',(1,2,3)))
1,a,(1, 2, 3)
>>> print('{1},{0},{2}'.format(1,'a',(1,2,3)))
a,1,(1, 2, 3)
>>> print('{n0},{n1},{n2}'.format(n1=1,n2='a',n0=(1,2,3)))
(1, 2, 3),1,a
>>> print('{:.2f}'.format(12.333))#小數點后保留兩位 12.33 >>> print('{a:.2f}'.format(a=12.333)) 12.33 >>> print('{:.2%}'.format(0.333))#百分比格式 33.30% >>> print('{:o}'.format(20))#轉換成8進制 24
>>> print('{:x}'.format(20))#轉換成16進制
14
>>> print('{a:<10}'.format(a=10.3))#左對齊長度為10
10.3
>>> print('{a:0<10}'.format(a=10.3))#左對齊,長度為10,數字補0填充右邊
10.3000000
>>> print('{a:2<10}'.format(a=10.3))#左對齊,長度為10,數字補2填充右邊
10.3222222
>>> print('{a:0>10}'.format(a=10.3))#右對齊,長度為10,數字補0填充左邊
00000010.3
>>> print('{a:0^10}'.format(a=10.3))#居中對齊,長度為10,數字補0填充兩邊
00010.3000
字符串的常用方法
python中有許多字符串的方法,熟悉掌握相關方法能方便我們對字符串進行特定的處理以滿足某些需求。下面將列舉一些常用的字符串方法及其使用實例。
1.count()
語法:string.count(str, beg=0, end=len(string))
作用:返回 str 在 string 里面出現的次數,如果 beg 或者 end 指定則返回指定范圍內 str 出現的次數
>>> 'abcdabcdaaa'.count('a',0,5)#返回'a'在字符串前5個字符中出現的次數 2
2.find
語法:string.find(str, beg=0, end=len(string))
作用:檢測 str 是否包含在 string 中,如果 beg 和 end 指定范圍,則檢查是否包含在指定范圍內,如果是返回開始的索引值,否則返回-1
>>> 'asdbsasbdasba'.find('a')#返回'a'在字符串中第一次出現的索引的位置 0 >>> 'asdbsasbdasba'.find('a',3,7)#返回'a'在索引3到索引7范圍內(包括3不包括7)第一次出現的索引的位置 5 >>> 'asdbsasbdasba'.find('asd')#返回字符串'asd'在整個字符串中第一次出現的索引的位置
0 >>> 'asdbsasbdasba'.find('123')#字符串'123'未出現在原字符串中,故返回-1 -1
3.index
語法:string.index(str, beg=0, end=len(string))
作用:跟find()方法一樣,只不過如果str不在 string中會報一個異常.
4.isdigit
語法:string.isdigit()
作用:如果 string 只包含數字則返回 True 否則返回 False.
>>> '21321231'.isdigit() True >>> '123asd'.isdigit() False
5.isalpha
語法:string.isalpha()
作用:如果 string 只包含字母則返回 True 否則返回 False.
>>> 'asdsad'.isalpha() True >>> '123ad'.isalpha() False
6.endswith
語法:string.endswith(obj, beg=0, end=len(string))
作用:檢查字符串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的范圍內是否以 obj 結束,如果是,返回 True,否則返回 False.
>>> 'asdsada123'.endswith('123',0,9) False >>> 'asdsada123'.endswith('12',0,9) True
7.startwith
語法:string.startswith(obj, beg=0,end=len(string))
作用:檢查字符串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定范圍內檢查.
>>> 'asdsadasdasd'.startswith('sd',0,10) False >>> 'asdsadasdasd'.startswith('sd',1,10) True
8.islower
語法:string.islower()
作用:如果 string 中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是小寫,則返回 True,否則返回 False
>>> 'sadsa'.islower() True >>> '12Adsd'.islower() False
9.isupper
語法:string.isupper()
作用:如果 string 中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是大寫,則返回 True,否則返回 False
>>> 'ASD'.isupper() True >>> '12sa'.isupper() False
10.upper
語法:string.upper()
作用:轉換 string 中的小寫字母為大寫
>>> 'asdsadas'.upper() 'ASDSADAS'
11.lower
語法:string.lower()
作用:轉換 string 中的大寫字母為小寫
>>> 'ASDF'.lower() 'asdf'
12.strip (lstrip,rstrip)
語法:string.strip() string.lstrip() string.rstrip()
作用:刪除 string 字符串中的空格.
刪除 string 字符串左邊的空格.
刪除 string 字符串末尾的空格.
>>> ' 123 '.strip() '123' >>> ' 123 '.lstrip() '123 ' >>> ' 123 '.rstrip() ' 123'
13.capitalize
語法:string.capitalize()
作用:把字符串的第一個字符大寫
>>> 'sadasd'.capitalize() 'Sadasd'
14.titile
語法:string.titile()
作用:返回"標題化"的 string,就是說所有單詞都是以大寫開始,其余字母均為小寫
>>> 'abc def ghi'.title() 'Abc Def Ghi'
15.split
語法:string.split(str="", num=string.count(str))
作用:以 str 為分隔符切片 string,如果 num有指定值,則僅分隔 num 個子字符串.且返回值為一個列表。
>>> 'asdsadsadsadasdsadsad'.split('a',5) ['', 'sds', 'ds', 'ds', 'd', 'sdsadsad']
16.repalce
語法:string.replace(str1, str2, num=string.count(str1))
作用:把 string 中的 str1 替換成 str2,如果 num 指定,則替換不超過 num 次.
>>> 'abcabcabcabc'.replace('a','A',3) 'AbcAbcAbcabc'
總結:1.字符串作為常用的數據類型,屬於序列類型中的一種
2.字符串的轉義能表示很多不方便顯示的字符,但同時也會帶來一些麻煩,要學會正確的處理
3.字符串方法可以方便的對字符串作出處理,雖然字符串是不可變對象,但是可以通過返回新對象的方法來實現增刪改查,字符串方法很多,掌握常用的就好