python 的String,集合(List,元组,Dict)
引言
想學(xué)爬蟲還是 python 專業(yè)啊,之前一直在用 java, 現(xiàn)在決定嘗嘗鮮,使用 python及爬蟲框架來完成網(wǎng)絡(luò)數(shù)據(jù)采集。
編程語言之間都是相通的,比如都需要模塊化,引入其他文件來實現(xiàn)功能,使用列表等容器來處理數(shù)據(jù),都要使用 json 或 xml 來解析和傳輸數(shù)據(jù)。
你會發(fā)現(xiàn)通過 類比 的方式,帶著問題去學(xué)習(xí),你會發(fā)現(xiàn)走的很快
而且我認(rèn)為代碼示例的作用是 異常強(qiáng)大的, 我會盡量使用代碼示例的方式來展示,以滿足同學(xué)快速學(xué)習(xí)的需要,也備后續(xù)查詢。
下面就是在 使用 python 過程中的問題總結(jié),okay,讓我們一起來歷險吧~
String 有哪些有用的方法?
不管是哪種語言,用的最多的類型估計都是 string (字符串),要想快速入門 python, 掌握 string 也是必須的。
在 java 中使用最多的 string 功能,我也會帶著同樣的疑問來了解 python 該使用什么方法實現(xiàn)。如果這里沒有你要找的方法,可以到 python string 官方地址完整方法去查詢
如何拼接字符串?
- 使用 + 號來拼接,要注意的是,當(dāng)有數(shù)字的時候一定要轉(zhuǎn)化為字符串格式 str(value) 才能夠相加,不然會報錯。
- 使用%進(jìn)行拼接,和占位符的概念比較類似,這里舉個栗子
如何分隔字符串?
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' # 對字符串分割 split_str = 'a-b-c-d' print(split_str.split('-'))如何獲取字符串長度
# 獲取字符串的長度 print(len('banana'))如何將 list 拼接成字符串?
# 以 - 做間隔,拼接字符串 join_str_list = ['a', 'b', 'c', 'd'] print('-'.join(join_str_list)) # 這里就是用 - 拼接后的值如何替換字符串?
str.replace(old, new[, count])count 表示替換的次數(shù),如果沒有指定,則只會替換第一個遇到的
如何去除字符串中的空格?
去除字符串中空格分為 3 種
- 去除兩端的空格
- 去除左邊的空格
- 去除右邊的空格
如何子字符串是否包含在父字符串中?
child_str = 'abc' print('abcd'.find(child_str)) # 如果存在就返回首字母下標(biāo),不存在返回 -1python 有哪些有用的容器?
學(xué)過 java 的都知道,在 java 中使用最多的容器有 List, Map, Set, Array,這些容器可以讓我們方便的存儲并操作數(shù)據(jù),那么 python 中又有哪些類似的容器可供我們使用呢?
列表 list
python 中也有列表,功能包含了 java 列表,而且更牛的是它可以 包含不同類型的元素
。
如何遍歷一個列表
有兩種方式可實現(xiàn)
- for 循環(huán)的方式,這當(dāng)然是最常見的
在只需要讀取列表的元素本身時這種方式當(dāng)然很優(yōu)雅。但如果需要獲取元素的下標(biāo),就力不從心了,這就需要下面的方式。
- 使用內(nèi)置函數(shù) range 和 len, 操作元素下表
如何對列表切片?
pyton 中專門有切片操作符 :, 想切多厚切多厚,這可比 java 要方便不少。
通過例子來感受下吧。
如何給列表添加元素?
有四種方式
- 在列表尾部添加元素 append(value)
- 將一個列表中的每個元素分別添加到另一個列表上 extend(list)
- 將一個元素插入到列表的指定位置 insert(index, value)
- +號,將兩個 list 直接相加, 會返回一個新的 list 對象
碼字太多了,自己都暈了,直接上代碼。
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' list1 = ['a', 'b', 'c', 'd'] list1.append('e') print(list1) # ['a', 'b', 'c', 'd', 'e']list2_1 = ['a', 'b', 'c', 'd'] list2_2 = ['e', 'f', 'g'] list2_1.extend(list2_2) print(list2_1) # ['a', 'b', 'c', 'd', 'e', 'f', 'g']list3 = ['a', 'c', 'd'] list3.insert(1, 'b') # ['a', 'b', 'c', 'd'] print(list3)# 內(nèi)存多余消耗,不推薦 list4_1 = ['a', 'b'] list4_2 = ['c', 'd'] print(list4_1 + list4_2) # ['a', 'b', 'c', 'd']刪掉元素
也有幾種方法可實現(xiàn)
上代碼
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' remove_list_1 = ['a', 'b', 'c'] print(remove_list_1.pop(0)) print(remove_list_1)# ['b', 'c']remove_list_2 = ['a', 'b', 'c'] del remove_list_2[1] print(remove_list_2)# ['a', 'c']remove_list_3 = ['a', 'b', 'c'] remove_list_3.remove('b') print(remove_list_3) # ['a', 'c']remove_list_4 = ['a', 'b', 'c'] del remove_list_4[1:2] print(remove_list_4)# ['a', 'c']字典 dict
dict 和 java 中 Map 非常類似,也是由 key 和 value 組成的,也是
使用 散列表 的算法存儲, 用過 java 的同學(xué)就直接把它當(dāng)做 Java HashMap 來用就可以啦。另外,在語法上要比 java 也要簡潔不少。
創(chuàng)建 dict 添加元素
a_dict = dict() # 這樣就創(chuàng)建了一個空字典 a_dict['one'] = 1 # 塞進(jìn)去一個元素not_empty_dict = {'one': 1, 'two': 2, 'three': 3} # 這是一個包含數(shù)據(jù)的字典遍歷 dict
使用 for 循環(huán)遍歷所有字典,可以遍歷字典中的 key,這樣的遍歷是沒有特定順序的,如果想按照順序遍歷需要使用內(nèi)置函數(shù) sorted
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' d = {'b': 2, 'a': 1, 'c': 3}for item_key in d:print(item_key, d[item_key])for item_key in sorted(d):print(item_key, d[item_key])那我如果想要遍歷 dict 中的 values 呢?
還真有一個方法叫 values(), 它會返回一個值集合,并可以應(yīng)用 in 操作符遍歷
d = {'b': 2, 'a': 1, 'c': 3}for value in d.values():print(value)for sorted_value in sorted(d.values()):print(sorted_value)元組
什么是元組? java 中可沒有聽過內(nèi)置元組這樣的數(shù)據(jù)結(jié)構(gòu)。
在前面已經(jīng)講了列表,知道一個列表可以存儲多個數(shù)據(jù)結(jié)構(gòu)。元組和列表很像,但要記住它們間的一個重要區(qū)別: 元組是不可變的。
如何創(chuàng)建元組?
注意,由于元組是不可變的,無法修改它的元素。但我們可以使用將多個元組結(jié)合成一個新的元組。(元組也支持 +)
tuple_a = 1, 2, 3, 4, 5tuple_b = (1, 2, 3, 4, 5) # tuple 內(nèi)置函數(shù)的參數(shù)必須是一個序列 tupe_c = tuple('12345') # 字符串 tuple_e = tuple([1, 2, 3, 4, 5]) # 列表 tuple_f = tuple((1,2,3,4,5)) # 元組tuple_d = tuple_a + tuple_b print(tuple_d)元組有什么用?
既然 python 中有這么個數(shù)據(jù)結(jié)構(gòu),自然就有它的用武之地。還別說,它的用途還真不少。
- 交換變量 和 對多個變量賦值 更方便,優(yōu)雅了
- 可以在函數(shù)中返回多個值,將它們裝到元組里就行
其他
上面講述的都是一些大的主題,除了這些,還有一些相對小些的。
雖然小,但也很重要。這些小且重要的部分都在這個部分存放吧。
全局變量是如何處理的?
我們知道 java 中由于變量類型的存在,可以在一個 class 內(nèi)聲明全局變量,從而在 class 的各個方法中讀取和賦值。
而這點(diǎn)在 python 中卻是行不通的,因為 python 中沒有變量類型, 如果在文件中聲明一個全局變量,再在函數(shù)內(nèi)對這個變量賦值,會直接導(dǎo)致錯誤產(chǎn)生。這是因為在函數(shù)內(nèi)又重新創(chuàng)建了一個局部變量。讀取全局變量也有這個問題。
那該怎么辦呢?嗯~o( ̄▽ ̄)o global 關(guān)鍵字就要登場了。
在函數(shù)內(nèi)部,使用全局變量前,先用 global 關(guān)鍵字聲明下這個變量,表示這個變量是全局變量,后面再使用就 okay啦。
上栗子…
g_variable = 3def test_g_variable():global g_variableprint(g_variable) # 3g_variable = 2print(g_variable) # 2test_g_variable()總結(jié)
以上是生活随笔為你收集整理的python 的String,集合(List,元组,Dict)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3进行汉字和unicode码
- 下一篇: 使用Python内置的smtplib包和