複合數據類型,英文詞頻統計

做業來源: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()
相關文章
相關標籤/搜索