复合数据类型,英文词频统计

作业来源: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()

 

posted @ 2019-03-22 17:11  L杉  阅读(166)  评论(0编辑  收藏  举报