摘要:參數描述搜索的子字符串字符串開始搜索的位置。檢測字符串中是否包含子字符串,如果指定開始和結束范圍,則檢查是否包含在指定范圍內,該方法與方法一樣,只不過如果不在中會報一個異常。如果指定的長度小于字符串的長度則返回原字符串。
字符串(str)
字符串類型是python的序列類型,他的本質就是字符序列,而且python的字符串類型是不可以改變的,你無法將原字符串進行修改,但是可以將字符串的一部分復制到新的字符串中,來達到相同的修改效果。
創建字符串類型可以使用單引號或者雙引號又或者三引號來創建,實例如下:
單引號
>>> string = "ansheng" # type是查看一個變量的數據類型 >>> type(string)
雙引號
>>> string = "ansheng" # type是查看一個變量的數據類型 >>> type(string)
三引號
>>> string = """ansheng""" >>> type(string)
還可以指定類型
>>> var=str("string") >>> var "string" >>> type(var)字符串方法
每個類的方法其實都是很多的,無論我們在學習的過程中個還是工作的時候,常用的其實沒有多少,所以我們沒必要去可以得記那么多,有些方法我們只需要對其有個印象就ok了,忘了的時候可以google一下。
首字母變大寫
capitalize(self):
>>> name="ansheng" >>> name.capitalize() "Ansheng"
內容居中,width:字符串的總寬度;fillchar:填充字符,默認填充字符為空格。
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"內容的時候會發現中間有一個" ",這個其實就是一個`tab`鍵 >>> string "hello word" # 把`tab`鍵換成一個空格 >>> string.expandtabs(1) "hello word" # 把`tab`鍵換成十個空格 >>> string.expandtabs(10) "hello word"
檢測字符串中是否包含子字符串str,如果指定beg(開始)和end(結束)范圍,則檢查是否包含在指定范圍內,如果包含子字符串返回開始的索引值,否則返回-1。
find(self, sub, start=None, end=None):
參數 | 描述 |
---|---|
str | 指定檢索的字符串 |
beg | 開始索引,默認為0 |
end | 結束索引,默認為字符串的長度 |
>>> string="hello word" # 返回`o`在當前字符串中的位置,如果找到第一個`o`之后就不會再繼續往下面尋找了 >>> string.find("o") 4 # 從第五個位置開始搜索,返回`o`所在的位置 >>> string.find("o",5) 7
字符串格式,后續文章會提到。
format(args, *kwargs):
檢測字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結束) 范圍,則檢查是否包含在指定范圍內,該方法與 python find()方法一樣,只不過如果str不在 string中會報一個異常。
index(self, sub, start=None, end=None):
參數 | 描述 |
---|---|
str | 指定檢索的字符串 |
beg | 開始索引,默認為0 |
end | 結束索引,默認為字符串的長度 |
>>> string="hello word" # 返回字符串所在的位置 >>> string.index("o") 4 # 如果查找一個不存在的字符串那么就會報錯 >>> string.index("a") Traceback (most recent call last): File "", line 1, in 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.ansheng.me" >>> string.partition("ansheng") ("www.", "ansheng", ".me")
把字符串中的 old(舊字符串)替換成new(新字符串),如果指定第三個參數max,則替換不超過max次
replace(self, old, new, count=None):
參數 | 描述 |
---|---|
old | 將被替換的子字符串 |
new | 新字符串,用于替換old子字符串 |
count | 可選字符串, 替換不超過count次 |
>>> string="www.ansheng.me" # 把就字符串`www.`換成新字符串`https://` >>> string.replace("www.","https://") "https://blog.ansheng.me" # 就字符串`w`換成新字符串`a`只替換`2`次 >>> string.replace("w","a",2) "aaw.ansheng.me"
返回字符串最后一次出現的位置,如果沒有匹配項則返回-1。
rfind(self, sub, start=None, end=None):
參數 | 描述 |
---|---|
str | 查找的字符串 |
beg | 開始查找的位置,默認為0 |
end | 結束查找位置,默認為字符串的長度 |
>>> string="hello word" # rfind其實就是反向查找 >>> string.rfind("o") 7 # 指定查找的范圍 >>> string.rfind("o",0,6) 4
返回子字符串str在字符串中最后出現的位置,如果沒有匹配的字符串會報異常,你可以指定可選參數[beg:end]設置查找的區間。
rindex(self, sub, start=None, end=None):
參數 | 描述 |
---|---|
str | 查找的字符串 |
beg | 開始查找的位置,默認為0 |
end | 結束查找位置,默認為字符串的長度 |
>>> string="hello word" # 反向查找索引 >>> string.rindex("o") 7 # 如果沒有查找到就報錯 >>> string.rindex("a") Traceback (most recent call last): File "", line 1, in 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.ansheng.me" # 指定切一次,以`.`來分割 >>> string.split(".",1) ["www", "ansheng.me"] # 指定切二次,以`.`來分割 >>> string.split(".",2) ["www", "ansheng", "me"]
按照行分隔,返回一個包含各行作為元素的列表,如果num指定則僅切片num個行.
splitlines(self, keepends=False):
參數 | 描述 |
---|---|
num | 分割行的次數 |
# 定義一個有換行的變量,` `可以劃行 >>> string="www ansheng me" # 輸出內容 >>> print(string) www ansheng me # 把有行的轉換成一個列表 >>> string.splitlines(1) ["www ", "ansheng ", "me"]
檢查字符串是否是以指定子字符串開頭,如果是則返回 True,否則返回 False。如果參數 beg 和 end 指定值,則在指定范圍內檢查。
startswith(self, prefix, start=None, end=None):
參數 | 描述 |
---|---|
str | 檢測的字符串 |
strbeg | 可選參數用于設置字符串檢測的起始位置 |
strend | 可選參數用于設置字符串檢測的結束位置 |
>>> string="www.ansheng.me" >>> string.startswith("www") True >>> string.startswith("www",3) False
移除字符串頭尾指定的字符(默認為空格)
strip(self, chars=None):
參數 | 描述 |
---|---|
chars | 移除字符串頭尾指定的字符 |
>>> string=" www.ansheng.me " >>> string " www.ansheng.me " # 刪除空格 >>> string.strip() "www.ansheng.me" >>> string="_www.ansheng.me_" # 指定要把左右兩邊的"_"刪除掉 >>> string.strip("_") "www.ansheng.me"
用于對字符串的大小寫字母進行轉換,大寫變小寫,小寫變大寫
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"去除值得兩端空格
>>> var=" ansheng " >>> var " ansheng " >>> var.strip() "ansheng"str類型和bytes類型轉換
以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)
執行結果:
C:Python35python.exe F:/Python_code/sublime/Day03/str.py 中 文 ================ 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:Python27python.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"xe4xb8xad" # 228=十進制,0b11100100=二進制 228 0b11100100 184 0b10111000 173 0b10101101 文 b"xe6x96x87" 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允許你對某些字符進行轉義,以此來實現一些難以單純用字符描述的效果
# 常用的內容也轉義也就是` `和` `了,` `是用來換行的,` `是用來代替一個`tab`鍵 >>> string="My Name is" >>> print(string) My Name is使用+拼接
你可以使用+號將多個字符串或字符串變量拼接起來
>>> a="my " >>> b="name " >>> c="is " >>> d="ansheng" >>> a+b+c+d "my name is ansheng"切片
切片操作符是序列名后跟一個方括號,方括號中有一對可選的數字,并用冒號分割。注意這與你使用的索引操作符十分相似。記住數是可選的,而冒號是必須的,切片操作符中的第一個數表示切片開始的位置,第二個數表示切片到哪里結束,第三個數表示切片間隔數。如果不指定第一個數,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 |
[startsetp] | 從start提取到end-1,每setp個字符提取一個 |
索引和切片同時適用于字符串、列表與元組
索引通常用于查找某一個字符串或值
切片通常用于查找某一個范圍內的字符串或值
實例:
# 定義一個列表,列表內有三個元素 >>> var=["Linux","Win","Unix"] # 通過索引取到了一個值 >>> var[0] "Linux" # 通過切片取到了多個值 >>> var[0:2] ["Linux", "Win"] >>> var[1:3] ["Win", "Unix"]
原文連接
Python全棧之路系列文章
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38340.html
摘要:列表同字符串一樣都是有序的,因為他們都可以通過切片和索引進行數據訪問,且列表的的是可變的。 列表(list)同字符串一樣都是有序的,因為他們都可以通過切片和索引進行數據訪問,且列表的的是可變的。 創建列表的幾種方法 第一種 name_list = [Python, PHP, JAVA] 第二種 name_list = list([Python, PHP, JAVA]) 創建一個空列表 ...
摘要:元組和列表的為唯一區別就是列表可以更改,元組不可以更改,其他功能與列表一樣創建元組的兩種方法第一種第二種如果元祖內只有一個元素,那么需要加上一個逗號,否則就變成字符串了。 元組(tuple)和列表的為唯一區別就是列表可以更改,元組不可以更改,其他功能與列表一樣 創建元組的兩種方法 第一種 ages = (11, 22, 33, 44, 55) 第二種 ages = tuple((11,...
摘要:字典在基本的數據類型中使用頻率也是相當高的,而且它的訪問方式是通過鍵來獲取到對應的值,當然存儲的方式也是鍵值對了,屬于可變類型。 字典(dict)在基本的數據類型中使用頻率也是相當高的,而且它的訪問方式是通過鍵來獲取到對應的值,當然存儲的方式也是鍵值對了,屬于可變類型。 創建字典的兩種方式 第一種 >>> dic = {k1:123,k2:456} >>> dic {k1: 123, ...
摘要:目前提供的字符串格式化方式有兩種百分號方式方式這兩種方式在和中都適用,百分號方式是一直內置存在的,方式為近期才出來的。 This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing % string formatti...
摘要:可以對文件進行查看創建等功能,可以對文件內容進行添加修改刪除,且所使用到的函數在為,在同時支持和,但是在系列移除了函數。在及以后,又支持同時對多個文件的上下文進行管理,即原文鏈接 Python可以對文件進行查看、創建等功能,可以對文件內容進行添加、修改、刪除,且所使用到的函數在Python3.5.x為open,在Python2.7.x同時支持file和open,但是在3.5.x系列移除...
摘要:數字在中,整型長整型浮點數負數布爾值等都可以稱之為數字類型。數字類型的復雜度整數比浮點數簡單浮點數比復數簡單。布爾類型布爾類型其實就是數字和的變種而來,即真或假,實際上就是內置的數字類型的子類而已。 上篇文章中我們簡單的體驗了Python語言基本概念與語法,那么在繼續深入下去的過程中,不妨先學習幾個常見的Python內置數據類型?這也是大部分Python教科書的學習目錄,由淺至深,慢慢...
閱讀 2155·2021-11-12 10:36
閱讀 2147·2021-09-03 10:41
閱讀 2761·2021-08-19 10:57
閱讀 1230·2021-08-17 10:14
閱讀 1487·2019-08-30 15:53
閱讀 1210·2019-08-30 15:43
閱讀 975·2019-08-30 13:16
閱讀 2983·2019-08-29 16:56