Python课程设计:文本处理

test题目:

  1. 有一个文本文件sample.txt,其内容包含小写字母和大写字母。请将该文件复制到另一文件sample_copy.txt,并将原文件中的小写字母全部转换为大写字母,其余格式均不变。
  2. 统计上述转换后的文本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()

运行结果:

Python课程设计:文本处理_第1张图片

希望大家多多点赞支持哈!

你可能感兴趣的:(python,matplotlib)