做業來源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753html
1.列表,元組,字典,集合分別如何增刪改查及遍歷。java
2.總結列表,元組,字典,集合的聯繫與區別。參考如下幾個方面:python
列表:list1 = ['python',2019,'java',1997]數組
列表的數據項不須要具備相同的類型,建立一個列表,只要把逗號分隔的不一樣的數據項使用方括號括起來便可app
list[index]:訪問列表下標爲index的值,賦值修改下標index的值 del list[index]:刪除列表下標爲index的值 list[ : ]:截取列表中的片斷ide
len(list):返回列表的長度 max(list):返回列表中的最大值 min(list):返回列表中的最小值 list(seq):將元組轉換成列表函數
list.append(obj):在列表末尾添加新的對象 list.count(obj):統計某個元素在列表中出現的次數 工具
list.extend(seq):在列表末尾一次性追加另外一個序列中的多個值(用新列表擴展原來的列表)編碼
list.index(obj):從列表中找出某個值第一個匹配項的索引位置 list.insert(index, obj):將對象插入列表url
list.pop([index=-1])移除列表中的一個元素(默認最後一個元素),而且返回該元素的值
list.remove(obj)移除列表中某個值的第一個匹配項 list.sort(key=None, reverse=False)對原列表進行排序
元組:tup1 = ('python',2019,'java',1997)
元組與列表相似,不一樣之處在於元組的元素不能修改
建立元組,只須要在括號中添加元素,並使用逗號隔開便可
元組中只包含一個元素時,須要在元素後面添加逗號,不然括號會被看成運算符使用;
元組中的元素值不容許修改,tup[index]:訪問元組下標爲index的值,可經過tup = tup1+tup2對元組進行鏈接組合
元組中的元素值不容許刪除,del tup:刪除整個元組 tup[ : ]:截取元組中的片斷
len(tup):返回元組的長度 max(tup):返回元組中的最大值 min(tup):返回元組中的最小值 tup(seq):將列表轉換成列表
字典:dict = {'a': '1', 'b': '2', 'c': '3'}
字典是另外一種可變容器模型,且可存儲任意類型對象。
字典的鍵必須是惟一的,但值則沒必要
字典的每一個鍵值(key=>value)對用冒號(:)分割,每一個對之間用逗號(,)分割,整個字典包括在花括號({})中
dict['key']:訪問字典中的值,賦值修改key對應的值 dict['key'] = value:添加鍵值對
del dict['key']:刪除鍵 'key' dict.clear():清空字典 del dict :刪除字典
len(dict):返回字典元素的個數 str(dict):輸出字典,以可打印的字符串表示
dict.items():返回可遍歷的(鍵, 值) 元組數組 pop(key[,default]):刪除字典給定鍵 key 所對應的值,返回值爲被刪除的值
集合:set1= {value01,value02,...} 或者 set(value)
集合是一個無序的不重複元素序列,可使用大括號 { } 或者 set() 函數建立集合
set1 - set2:集合set1中包含而集合set2中不包含的元素
set1 | set2:集合set1 或set2中包含的全部元素
set1 & set2:集合set1和set2中都包含了的元素
set1 ^ set2:不一樣時包含於set1和set2的元素
set.add(elmnt):添加元素 set.pop(): 隨機移除一個元素 set.remove(item):移除集合中的指定元素
set.update:修改當前集合,能夠添加新的元素或集合到當前集合中
3.詞頻統計
3.1下載一長篇小說,存成utf-8編碼的文本文件 file
3.2經過文件讀取字符串 str
3.3對文本進行預處理
3.4分解提取單詞 list
3.5單詞計數字典 set , dict
3.6按詞頻排序 list.sort(key=lambda),turple
3.7排除語法型詞彙,代詞、冠詞、連詞等無語義詞
自定義停用詞表
或用stops.txt
3.8輸出TOP(20)
3.9可視化:詞雲
排序好的單詞列表word保存成csv文件
import pandas as pd
pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')
線上工具生成詞雲:
https://wordart.com/create
import re from nltk.corpus import stopwords from bs4 import BeautifulSoup import requests def excise(): url = 'http://novel.tingroom.com/jingdian/2814/77766.html' headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} response = requests.get(url,headers=headers) response.encoding = 'utf-8' soup=BeautifulSoup(response.text,'lxml') a =soup.find('div',class_='text').get_text() a = re.sub('<!-[\s\S]*?-->','',a) a = re.sub('^\s*\n','',a).replace('\xa0','') a = a.splitlines()[:-4] a=''.join(a) a=re.sub('\[.*?\]','',a) s = ",.? ?':' !--\!_:" for s1 in s: a=a.replace(s1,' ') with open('oo.text','w') as file: file.write(a) a=a.lower() b = a.split() c = set(b) number = {} for i in c: number[i] = a.count(i) words = stopwords.words('english') for word in words: stopword = number.pop(word,'none') number = sorted(number.items(),key=lambda key:key[1],reverse=True) Top = number[:20] print(Top) pd.DataFrame(data=Top).to_csv('TOP20.csv', encoding='utf-8') if __name__ == '__main__': excise()