作業來源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753
1.清單,元組,字典,集合分别如何增删改查及周遊。
2.總結清單,元組,字典,集合的聯系與差別。參考以下幾個方面:
- 括号
- 有序無序
- 可變不可變
- 重複不可重複
- 存儲與查找方式
清單:list1 = ['python',2019,'java',1997]
清單的資料項不需要具有相同的類型,建立一個清單,隻要把逗号分隔的不同的資料項使用方括号括起來即可
list[index]:通路清單下标為index的值,指派修改下标index的值 del list[index]:删除清單下标為index的值 list[ : ]:截取清單中的片段
len(list):傳回清單的長度 max(list):傳回清單中的最大值 min(list):傳回清單中的最小值 list(seq):将元組轉換成清單
list.append(obj):在清單末尾添加新的對象 list.count(obj):統計某個元素在清單中出現的次數
list.extend(seq):在清單末尾一次性追加另一個序列中的多個值(用新清單擴充原來的清單)
list.index(obj):從清單中找出某個值第一個比對項的索引位置 list.insert(index, obj):将對象插入清單
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()