字符串類型是python的序列類型,他的本質就是字符序列,並且python的字符串類型是不能夠改變的,你沒法將原字符串進行修改,可是能夠將字符串的一部分複製到新的字符串中,來達到相同的修改效果。python
建立字符串類型可使用單引號或者雙引號又或者三引號來建立,實例以下:git
單引號api
>>> string = 'kongling' # type是查看一個變量的數據類型 >>> type(string) <class 'str'>
雙引號學習
>>> string = "kongling" # type是查看一個變量的數據類型 >>> type(string) <class 'str'>
三引號google
>>> string = """kongling""" >>> type(string) <class 'str'>
還能夠指定類型編碼
>>> var=str("string") >>> var 'string' >>> type(var) <class 'str'>
每一個類的方法其實都是不少的,不管咱們在學習的過程當中個仍是工做的時候,經常使用的其實沒有多少,因此咱們不必去能夠得記那麼多,有些方法咱們只須要對其有個印象就ok了,忘了的時候能夠google一下,適用於Python全部類型和方法的學習spa
首字母變大寫翻譯
capitalize(self):code
>>> name="kongling" >>> name.capitalize() 'kongling'
內容居中,width:字符串的總寬度;fillchar:填充字符,默認填充字符爲空格。orm
center(self, width, fillchar=None):
# 定義一個字符串變量,名爲"string",內容爲"hello word" >>> string="hello word" # 輸出這個字符串的長度,用len(value_name) >>> len(string) 10 # 字符串的總寬度爲10,填充的字符爲"*" >>> string.center(10,"*") 'hello word' # 若是設置字符串的總產都爲11,那麼減去字符串長度10還剩下一個位置,這個位置就會被*所佔用 >>> string.center(11,"*") '*hello word' # 是從左到右開始填充 >>> string.center(12,"*") '*hello word*'
統計字符串裏某個字符出現的次數,可選參數爲在字符串搜索的開始與結束位置。
count(self, sub, start=None, end=None):
參數 | 描述 |
---|---|
sub | 搜索的子字符串; |
start | 字符串開始搜索的位置。默認爲第一個字符,第一個字符索引值爲0; |
end | 字符串中結束搜索的位置。字符中第一個字符的索引爲 0。默認爲字符串的最後一個位置; |
>>> string="hello word" # 默認搜索出來的"l"是出現過兩次的 >>> string.count("l") 2 # 若是指定從第三個位置開始搜索,搜索到第六個位置,"l"則出現過一次 >>> string.count("l",3,6) 1
解碼
decode(self, encoding=None, errors=None):
# 定義一個變量內容爲中文 temp = "中文" # 把變量的字符集轉化爲UTF-8 temp_unicode = temp.decode("utf-8")
編碼,針對unicode
encode(self, encoding=None, errors=None):
# 定義一個變量內容爲中文,字符集爲UTF-8 temp = u"中文" # 編碼,須要指定要轉換成什麼編碼 temp_gbk = temp_unicode.encode("gbk")
判斷字符串是否以指定後綴結尾,若是以指定後綴結尾返回True,不然返回False。
endswith(self, suffix, start=None, end=None):
參數 | 描述 |
---|---|
suffix | 後綴,多是一個字符串,或者也多是尋找後綴的tuple |
start | 開始,切片從這裏開始 |
end | 結束,片到此爲止 |
>>> string="hello word" # 判斷字符串中是否已"d"結尾,若是是則返回"True" >>> string.endswith("d") True # 判斷字符串中是否已"t"結尾,不是則返回"False" >>> string.endswith("t") False # 制定搜索的位置,實則就是從字符串位置1到7來進行判斷,若是第七個位置是"d",則返回True,不然返回False >>> string.endswith("d",1,7) False
把字符串中的tab符號(‘\t’)轉爲空格,tab符號(‘\t’)默認的空格數是8。
expandtabs(self, tabsize=None):
參數 | 描述 |
---|---|
tabsize | 指定轉換字符串中的 tab 符號(‘\t’)轉爲空格的字符數 |
>>> string="hello word" # 輸出變量"string"內容的時候會發現中間有一個"\t",這個其實就是一個`tab`鍵 >>> string 'hello\tword' # 把`tab`鍵換成一個空格 >>> string.expandtabs(1) 'hello word' # 把`tab`鍵換成十個空格 >>> string.expandtabs(10) 'hello word'
檢測字符串中是否包含子字符串str,若是指定start(開始)和end(結束)範圍,則檢查是否包含在指定範圍內,若是包含子字符串返回開始的索引值,不然返回-1。
find(self, sub, start=None, end=None):
參數 | 描述 |
---|---|
str | 指定檢索的字符串 |
start | 開始索引,默認爲0 |
end | 結束索引,默認爲字符串的長度 |
>>> string="hello word" # 返回`o`在當前字符串中的位置,若是找到第一個`o`以後就不會再繼續往下面尋找了 >>> string.find("o") 4 # 從第五個位置開始搜索,返回`o`所在的位置 >>> string.find("o",5) 7
字符串格式。
format(*args, **kwargs):
檢測字符串中是否包含子字符串 str ,若是指定 start(開始) 和 end(結束) 範圍,則檢查是否包含在指定範圍內,該方法與 python find()方法同樣,只不過若是str不在 string中會報一個異常。
index(self, sub, start=None, end=None):
參數 | 描述 |
---|---|
str | 指定檢索的字符串 |
start | 開始索引,默認爲0 |
end | 結束索引,默認爲字符串的長度 |
>>> string="hello word" # 返回字符串所在的位置 >>> string.index("o") 4 # 若是查找一個不存在的字符串那麼就會報錯 >>> string.index("a") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
檢測字符串是否由字母和數字組成,若是string至少有一個字符而且全部字符都是字母或數字則返回True,不然返回False
isalnum(self):
>>> string="hes2323" # 若是存在數字或字母就返回`True`,不然返回`False` >>> string.isalnum() True # 中間有空格返回的就是False了 >>> string="hello word" >>> string.isalnum() False
檢測字符串是否只由字母組成。
isalpha(self):
# 若是所有都是字母就返回`True` >>> string="helloword" >>> string.isalpha() True # 不然就返回False >>> string="hes2323" >>> string.isalpha() False
檢測字符串是否只由數字組成
isdigit(self):
# 若是變量裏面都是數字就返回`True`,不然就返回`False` >>> string="hes2323" >>> string.isdigit() False >>> string="2323" >>> string.isdigit() True
檢測字符串是否由小寫字母組成
islower(self):
# 若是變量內容所有都是小寫字母就返回`True`,不然就返回`False` >>> string="hesasdasd" >>> string.islower() True >>> string="HelloWord" >>> string.islower() False
檢測字符串是否只由空格組成
isspace(self):
# 若是變量內容由空格來組成,那麼就返回`True`不然就返回`False` >>> string=" " >>> string.isspace() True >>> string="a" >>> string.isspace() False
檢測字符串中全部的單詞拼寫首字母是否爲大寫,且其餘字母爲小寫。
istitle(self):
# 若是變量的內容首字母是大寫而且其餘字母爲小寫,那麼就返回`True`,不然會返回`False` >>> string="Hello Word" >>> string.istitle() True >>> string="Hello word" >>> string.istitle() False
檢測字符串中全部的字母是否都爲大寫。
isupper(self):
# 若是變量值中全部的字母都是大寫就返回`True`,不然就返回`False` >>> string="hello word" >>> string.isupper() False >>> string="HELLO WORD" >>> string.isupper() True
將序列中的元素以指定的字符鏈接生成一個新的字符串。
join(self, iterable):
>>> string=("a","b","c") >>> '-'.join(string) 'a-b-c'
返回一個原字符串左對齊,並使用空格填充至指定長度的新字符串。若是指定的長度小於原字符串的長度則返回原字符串。
ljust(self, width, fillchar=None):
參數 | 描述 |
---|---|
width | 指定字符串長度 |
fillchar | 填充字符,默認爲空格 |
>>> string="helo word" >>> len(string) 9 # 定義的長度減去字符串的長度,剩下的就開始填充 >>> string.ljust(15,'*') 'helo word******'
轉換字符串中全部大寫字符爲小寫。
lower(self):
# 把變量裏的大寫所有轉換成小寫 >>> string="Hello WORD" >>> string.lower() 'hello word'
截掉字符串左邊的空格或指定字符
lstrip(self, chars=None):
參數 | 描述 |
---|---|
chars | 指定截取的字符 |
# 從左側開始刪除匹配的字符串 >>> string="hello word" >>> string.lstrip("hello ") 'word'
用來根據指定的分隔符將字符串進行分割,若是字符串包含指定的分隔符,則返回一個3元的tuple,第一個爲分隔符左邊的子串,第二個爲分隔符自己,第三個爲分隔符右邊的子串。
partition(self, sep):
參數 | 描述 |
---|---|
str | 指定的分隔符 |
# 返回的是一個元組類型 >>> string="www.baidu.com" >>> string.partition("baidu") ('www.', 'baidu', '.com')
把字符串中的 old(舊字符串)替換成new(新字符串),若是指定第三個參數max,則替換不超過max次
replace(self, old, new, count=None):
參數 | 描述 |
---|---|
old | 將被替換的子字符串 |
new | 新字符串,用於替換old子字符串 |
count | 可選字符串, 替換不超過count次 |
>>> string="www.baidu.com" # 把就字符串`www.`換成新字符串`https://` >>> string.replace("www.","https://") 'https://baidu.com' # 就字符串`w`換成新字符串`a`只替換`2`次 >>> string.replace("w","a",2) 'aaw.ansheng.me'
返回字符串最後一次出現的位置,若是沒有匹配項則返回-1。
rfind(self, sub, start=None, end=None):
參數 | 描述 |
---|---|
str | 查找的字符串 |
start | 開始查找的位置,默認爲0 |
end | 結束查找位置,默認爲字符串的長度 |
>>> string="hello word" # rfind其實就是反向查找 >>> string.rfind("o") 7 # 指定查找的範圍 >>> string.rfind("o",0,6) 4
返回子字符串str在字符串中最後出現的位置,若是沒有匹配的字符串會報異常,你能夠指定可選參數[start:end]
設置查找的區間。
rindex(self, sub, start=None, end=None):
參數 | 描述 |
---|---|
str | 查找的字符串 |
start | 開始查找的位置,默認爲0 |
end | 結束查找位置,默認爲字符串的長度 |
>>> string="hello word" # 反向查找索引 >>> string.rindex("o") 7 # 若是沒有查找到就報錯 >>> string.rindex("a") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
返回一個原字符串右對齊,並使用空格填充至長度 width 的新字符串。若是指定的長度小於字符串的長度則返回原字符串。
rjust(self, width, fillchar=None):
參數 | 描述 |
---|---|
width | 指定填充指定字符後中字符串的總長度 |
fillchar | 填充的字符,默認爲空格 |
>>> string="hello word" >>> len(string) 10 >>> string.rjust(10,"*") 'hello word' >>> string.rjust(12,"*") '**hello word'
從右到左經過指定分隔符對字符串進行切片,若是參數num有指定值,則僅分隔num個子字符串
rsplit(self, sep=None, maxsplit=None):
參數 | 描述 |
---|---|
str | 隔符,默認爲空格 |
num | 分割次數 |
>>> string="www.ansheng.me" >>> string.rsplit(".",1) ['www.ansheng', 'me'] >>> string.rsplit(".",2) ['www', 'ansheng', 'me']
刪除string字符串末尾的指定字符(默認爲空格).
rstrip(self, chars=None):
參數 | 描述 |
---|---|
chars | 指定刪除的字符 |
# 從尾部開始匹配刪除 >>> string="hello word" >>> string.rstrip("d") 'hello wor'
從左到右經過指定分隔符對字符串進行切片,若是參數num有指定值,則僅分隔num個子字符串
split(self, sep=None, maxsplit=None):
參數 | 描述 |
---|---|
str | 分隔符,默認爲空格 |
num | 分割次數 |
>>> string="www.baidu.com" # 指定切一次,以`.`來分割 >>> string.split(".",1) ['www', 'baidu.com'] # 指定切二次,以`.`來分割 >>> string.split(".",2) ['www', 'baidu', 'com']
按照行分隔,返回一個包含各行做爲元素的列表,若是num指定則僅切片num個行.
splitlines(self, keepends=False):
參數 | 描述 |
---|---|
num | 分割行的次數 |
# 定義一個有換行的變量,`\n`能夠划行 >>> string="www\nbaidu\ncom" # 輸出內容 >>> print(string) www baidu com # 把有行的轉換成一個列表 >>> string.splitlines(1) ['www\n', 'baicu\n', 'com']
檢查字符串是不是以指定子字符串開頭,若是是則返回 True,不然返回 False。若是參數 start 和 end 指定值,則在指定範圍內檢查。
startswith(self, prefix, start=None, end=None):
參數 | 描述 |
---|---|
str | 檢測的字符串 |
start | 可選參數用於設置字符串檢測的起始位置 |
end | 可選參數用於設置字符串檢測的結束位置 |
>>> string="www.baidu.com" >>> string.startswith("www") True >>> string.startswith("www",3) False
移除字符串頭尾指定的字符(默認爲空格)
strip(self, chars=None):
參數 | 描述 |
---|---|
chars | 移除字符串頭尾指定的字符 |
>>> string=" www.baidu.com " >>> string ' www.baidu.com ' # 刪除空格 >>> string.strip() 'www.baidu.com' >>> string="_www.baidu.com_" # 指定要把左右兩邊的"_"刪除掉 >>> string.strip("_") 'www.baidu.com'
用於對字符串的大小寫字母進行轉換,大寫變小寫,小寫變大寫
swapcase(self):
>>> string="hello WORD" >>> string.swapcase() 'HELLO word'
返回」標題化」的字符串,就是說全部單詞都是以大寫開始,其他字母均爲小寫。
title(self):
>>> string="hello word" >>> string.title() 'Hello Word'
根據參數table給出的表(包含 256 個字符)轉換字符串的字符, 要過濾掉的字符放到 del 參數中。
translate(self, table, deletechars=None):
參數 | 描述 |
---|---|
table | 翻譯表,翻譯表是經過maketrans方法轉換而來 |
deletechars | 字符串中要過濾的字符列表 |
將字符串中的小寫字母轉爲大寫字母
upper(self):
>>> string="hello word" >>> string.upper() 'HELLO WORD'
返回指定長度的字符串,原字符串右對齊,前面填充0
zfill(self, width):
參數 | 描述 |
---|---|
width | 指定字符串的長度。原字符串右對齊,前面填充0 |
>>> string="hello word" >>> string.zfill(10) 'hello word' >>> string.zfill(20) '0000000000hello word'
以UTF-8編碼的時候,一個漢字是三個字節,一個字節是八位
3.5.x實例
代碼以下:
#!/usr/bin/env python # _*_ coding:utf-8 _*_ var = "中文" for n in var: print(n) print("================") var2 = "zhongwen" for n in var2: print(n)
執行結果:
中 文 ================ z h o n g w e n
2.7.x實例
代碼以下:
#!/usr/bin/env python # _*_ coding:utf-8 _*_ var = "中文" for n in var: print(n) print("================") var2 = "zhongwen" for n in var2: print(n)
執行結果
C:\Python27\python.exe F:/Python_code/sublime/Day03/str.py � � � � � � ================ z h o n g w e n
經過上面的實例能夠知道,Python3.5.x
在輸出中文或者英文的時候是按照一個字符一個字符來輸出的,可是在Python2.7.x
就不這樣了,Python2.7.x
是按照字節來進行輸出的,能夠看到在輸出中文的時候是亂碼的,並且還輸出了六次,由於在UTF-8編碼的狀況下一個漢字是等於三個字節的,因此輸出了六個亂碼的字符。
在Python3.5.x裏面是既能夠輸出漢字,也能夠把輸出字節的,利用bytes這個方法,bytes能夠將字符串轉換爲字節
var="中文" for n in var: print(n) bytes_list = bytes(n, encoding='utf-8') # 十六進制輸出 print(bytes_list) for x in bytes_list: # 十進制,bin(x)二進制 print(x,bin(x))
輸出的結果
# 字符串 中 # 十六進制 b'\xe4\xb8\xad' # 228=十進制,0b11100100=二進制 228 0b11100100 184 0b10111000 173 0b10101101 文 b'\xe6\x96\x87' 230 0b11100110 150 0b10010110 135 0b10000111
b表明十六進制,\xe4這樣的是一個十六進制的字節
索引是指某個值在列表或別的數據類型中的一個位置
定義一個列表,查看列表中Linux
值對應在列表中的位置
>>> list_os = ["Windows","Linux","Mac","Unix"] >>> list_os.index("Linux") 1 >>> list_os[1] 'Linux'
\
轉義Python容許你對某些字符進行轉義,以此來實現一些難以單純用字符描述的效果
# 經常使用的內容也轉義也就是`\n`和`\t`了,`\n`是用來換行的,`\t`是用來代替一個`tab`鍵 >>> string="My \n Name \t is" >>> print(string) My Name is
+
拼接你可使用+
號將多個字符串或字符串變量拼接起來
>>> a="my " >>> b="name " >>> c="is " >>> d="kongling" >>> a+b+c+d 'my name is kongling'
切片操做符是序列名後跟一個方括號,方括號中有一對可選的數字,並用冒號分割。注意這與你使用的索引操做符十分類似。記住數是可選的,而冒號是必須的,切片操做符中的第一個數表示切片開始的位置,第二個數表示切片到哪裏結束,第三個數表示切片間隔數。若是不指定第一個數,Python就從序列首開始。若是沒有指定第二個數,則Python會中止在序列尾。注意,返回的序列從開始位置開始 ,恰好在結束位置以前結束。即開始位置是包含在序列切片中的,而結束位置被排斥在切片外。
>>> os="Linux" >>> os 'Linux' >>> os[0:2] 'Li' >>> os[0:4:2] 'Ln'
更多實例以下
切片符 | 說明 |
---|---|
[:] | 提取從開頭到結尾的整個字符串 |
[start:] | 從start到結尾的字符串 |
[:end] | 從開頭提取到end - 1 |
[start:end] | 從start提取到end - 1 |
[start : end : setp] | 從start提取到end-1,每setp個字符提取一個 |
索引和切片同時適用於字符串、列表與元組
實例:
# 定義一個列表,列表內有三個元素 >>> var=["Linux","Win","Unix"] # 經過索引取到了一個值 >>> var[0] 'Linux' # 經過切片取到了多個值 >>> var[0:2] ['Linux', 'Win'] >>> var[1:3] ['Win', 'Unix']