项目描述:读一个txt文档,统计文档中中文、英文、数字、标点符号、空格的个数。利用可视化界面查看统计图表,并保存图片到指定路径
这个项目主要分为3部分:对文件的操作(读,写),统计字符的个数,将数据显示在图表中。
(1)读文件,统计个数
#1.文件操作
# 打开文件
# 读文件
# 关闭文件
#2.确定统计类型,中文、英文、数字、符号、空格
import matplotlib.pyplot as plt
MyList = []
MyDict = {}
fd = open("帝婿.txt","r",encoding="utf-8")
MyList = fd.readlines()
fd.close()
for line in MyList:
for w in line:
if w >= '\u4e00' and w <= '\u9fa5':
MyDict["中文"] = MyDict.get("中文",0) +1
elif w >= '\u0030' and w <= '\u0039':
MyDict["数字"] = MyDict.get("数字", 0) + 1
elif w == " ":
MyDict["空格"] = MyDict.get("空格",0) + 1
elif (w >= '\u0041' and w <= '\u005a') or (w >= '\u0061' and w <= '\u007a'):
MyDict["英文"] = MyDict.get("英文", 0) + 1
else:
MyDict["符号"] = MyDict.get("符号", 0) +1
print(MyDict)
将统计的类型和次数存放在字典中,打印如下
(2)接下来用Python自带的库matplotlib,使其生成柱状图
CHList = []#存放字符的种类
NumList = []#对应的数字个数
MyDict_len = len(MyDict)
print(MyDict_len)
MyDictSorted = sorted(MyDict.items(),key=lambda item:item[1])
print(MyDictSorted)
for i in range(MyDict_len):
ch, num = MyDictSorted[i]
CHList.append(ch)
NumList.append(num)
plt.rcParams['font.family'] = ['Arial Unicode MS', 'Microsoft Yahei', 'SimHei', 'sans-serif']
plt.rcParams['font.size'] = 12
plt.figure(figsize=(18,8),dpi=80,facecolor='#B0C4DE')
plt.xlabel = "字符种类"
plt.ylabel = "出现次数"
plt.barh(CHList,NumList,height=0.8)
plt.title = "字符出现次数统计表"
plt.show()
生成的柱状图如下,因为英文和中文的比例太大了,这个图上基本看不到英文的数字,具体出现次数可以在(1)的打印信息中查看。
那么这个小项目到这里就结束了,代码中用到了字典,列表的相关知识,文件的操作,matplotlib库的使用,当然也可以用Python写一个可视化界面,打包生成小程序,便于以后的使用。