赞
踩
test题目:
- 有一个文本文件sample.txt,其内容包含小写字母和大写字母。请将该文件复制到另一文件sample_copy.txt,并将原文件中的小写字母全部转换为大写字母,其余格式均不变。
- 统计上述转换后的文本26个大写字母的个数,按个数从大到小排序,并绘制条形图。
代码如下:
注意:需要自己先创建两个文本文件sample.txt和sample_copy.txt,具体内容自己编辑。
test1:
- text1 = open("sample.txt")
- file = text1.readlines()
- text2 = open("sample_copy.txt", 'w')
- for line in file:
- text2.write(line.upper())
- text1.close()
- text2.close()
-
- print("转换成功!")
test2:
- import re
- import operator
- import matplotlib.pyplot as plt
- import matplotlib as mpl
-
- with open('sample_copy.txt') as f:
- text = f.read()
- geshu = len(re.findall(r'[A-Z]', text))
- # 找到所有相匹配的大写字母,并计算长度
- print('大写字母的个数为:%d个' % geshu)
-
-
- def count(string):
- order = {}
- # 先设置一个空的字典
- for i in string:
- order[i] = order.get(i, 0) + 1
- # 进行一波循环,添加键i,其值循环+1
- order = sorted(order.items(), key=operator.itemgetter(1), reverse=True)
- # 使用items()进行遍历一波,然后根据第二个键,也就是出现的次数进行排序(reverse = True 为降序排列)
- return order
-
-
- print('按从大到小顺序的列表为:', count(text))
-
- # 绘制条形图
- # 设置一波默认字体,怎么说
- fonts1 = mpl.font_manager.FontProperties(fname='SimHei.ttf', size=18)
- fonts2 = mpl.font_manager.FontProperties(fname='SimHei.ttf', size=15)
- # 此处是鼠鼠自己设置的字体,如果没有这个字体文件,可以选择注释掉
-
- string = dict(count(text))
- plot = plt.bar(range(len(string)), list(string.values()), align='center')
- plt.xticks(range(len(string)), list(string.keys()))
- for value in plot:
- height = value.get_height()
- plt.text(value.get_x() + value.get_width()/2, height, '%d' % int(height), ha='center', va='bottom')
- # ha='center' 水平居中, va='bottom' 在上方,就是将数据放在中上方
- plt.title('文本中大写子母出现次数条形统计图', fontproperties=fonts2)
- plt.xlabel("大写字母", fontproperties=fonts1)
- plt.ylabel("出现次数", fontproperties=fonts1)
- plt.show()
运行结果:
希望大家多多点赞支持哈!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。