PBY

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2019-03-22 03:00  PBY  阅读(291)  评论(0编辑  收藏  举报

 

 

作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753

1.列表,元组,字典,集合分别如何增删改查及遍历

列表:

#列表
list1 = ['gakki','masami', 1988, 1987]
list2 = [1, 2, 3, 4, 5]
list3 = ["a", "b", "c", "d"]
print ("list1[0]: ", list1[0])
print ("list2[1:5]: ", list2)
#增加
list2.append('6')
print("list2:",list2[0:100])
#删除
print ("原始列表 : ", list3)
del list3[2]
print ("删除后列表 : ", list3)
#更改
list2[2] = 2001
print ("更新后的第三个元素为 : ", list2[2])
#查找
list4=['Boyoung','gakki','masami']
a=list4.index('Boyoung')
print(a)

元组:

a = ['Gakki','ranks','first','in','the','world']
print(a[1:])  # 从左到右 下标1取到最后
print(a[1:-1])  # 从左到右 从下标1取到倒数第二个
print(a[1:-1:2])  # 从左到右 从下标1开始取到倒数第二个 步长为2
print(a[0::2])  # 从左到右 从下标0开始取到最后 步长为2
print(a[5::-2])  # 从右到左 从下标5开始往前取 步长为2
# 添加 insert() 添加到指定位置 两个参数
a.insert(2, 'the')
print("增加后的元组:",a)
# 修改
a[1] = 'win'  # 修改一个值
print("修改一个单词后的元组:",a)
a[1:] = ['smiles','like','a','flower']  # 同时修改多个值
print("修改后的元组:",a)
# 删除
a.remove(a[0])  # 删除指定元素
print("删除后的元组:",a)
#查找
# #index 索引 获取下标
b = a.index('flower')
print(b)

字典:

dict = {"gakki":"朴宝英", "masami":"长泽雅美"}
#增加
dict.setdefault("parkboyoung","朴宝英")
print("增加后的字典:",dict)
#删除
del dict['parkboyoung']
print("删除后的字典:",dict)
#修改
dict['gakki'] = 1988;
dict['masami'] = "1987"
print("修改后的字典:",dict)
#查找
print(dict["gakki"])
print(dict.get("masami"))#打印对应的内容,key不存在返回none
print(dict.get("parkboyoung"),"这个键不存在")#key不存在返回输入的内容

集合:

s = {1,2,3,4}
print (s)

#增加
s.add(1)
print("增加集合内有的数:",s)
s.add(8)
print("增加集合内不存在的数:",s)
s1 ={ 5,6,7,}
s.update(s1)
print("合并集合:",s)
#删除
s.pop()
print("随机删除后:",s)
s.remove(8)
print("指定删除后:",s)
#修改
s=s|s1
print("修改后:",s)
s=s&s1
print("修改后:",s)
#查找
# 交集
print (s1 & s)
# 并集
print (s1 | s)
# 差集
print (s1 - s)
print (s - s1)
# 对等差分
print (s1 ^ s)

遍历函数都相同,其下格式为:

function.sort()#function可以是列表、元组、字典或者集合任意一种
for i in function:
    print(i,end='>')

 

2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:

3.词频统计

  • 1.下载一长篇小说,存成utf-8编码的文本文件 file

    2.通过文件读取字符串 str

    3.对文本进行预处理

    4.分解提取单词 list

    5.单词计数字典 set , dict

    6.按词频排序 list.sort(key=lambda),turple

    7.排除语法型词汇,代词、冠词、连词等无语义词

    • 自定义停用词表
    • 或用stops.txt

       8.输出TOP(20)

  • 9.可视化:词云

 排序好的单词列表word保存成csv文件

import pandas as pd
pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')

线上工具生成词云:
https://wordart.com/create

 

fo = open('Les Miserables.txt', 'r', encoding='utf-8')
stra = fo.read().lower()
fo.close()
print(stra)  # 1.准备utf-8编码的文本文件file 2.通过文件读取字符串 str

sep = ',.;!'
for ch in sep:
    stra = stra.replace(ch, '')  # 进行预处理,清除掉sep中存在的标点符号
print(stra)

strList = stra.split(' ')
print(len(strList), strList)  # 分解提取单词,转化为列表list

strSet = set(strList)
print(len(strSet), strSet)  # 转化为集合

strDict = {}
for world in strSet:
    strDict[world] = strList.count(world)

print(len(strDict), strDict)  # 转化为字典,计算上一个集合中每个单词出现的次数

wcList = list(strDict.items())
print(wcList)  # 将字典中的目录转化为列表输出
wcList.sort(key=lambda x: x[1], reverse=True)
print(wcList)  # 按降序输出

e = {'a', 'the', 'an', 'and', 'i', 'or', 'of'}
strSet = strSet - e
print(len(strSet), strSet)  # 排除语法型词汇,代词、冠词、连词等无语义词

for i in range(20):
    print(wcList[i])  # TOP20输出
import pandas as pd

pd.DataFrame(data=wcList).to_csv(r'E:\大三用的软件\PyCharm Community Edition 2018.3.5\homework\joker.csv', encoding='utf-8')

在线词云: