一:文件读取(默认读取.py文件所在的目录)
记得将当前目录设置为文件目录(spyder编译器的右上角,本人用spyder)
filename = input('请输入你的文件名--------------- ')
file = open(filename + '.txt')
try:
for eachline in file:
print(eachline)
except:
print('打开文件出错')
finally:
file.close()
二:处理文本
- 打开文件(我打开的是《最后一片叶子》的英文版)
from collections import Counter
f = open('Leaf.txt')
eassy = f.read()
- 符号替换(方便用split()函数分割)
ch = '"!#?!.。-,'
for i in ch:
eassy = eassy.replace(i,' ')
eassy = eassy.split()
这里要说明的是,用split()分开之后eassy就是一个列表了
- 统计英文单词个数和出现频率:
eassy = dict(Counter(eassy))#调用Counter库统计eassy列表
eassy = list(eassy.items()) #把字典变回列表,这对后面的统计比较好
- 列表排序
eassy.sort(key = lambda x:x[1],reverse = True) #以列表中每个元素中索引为1的值排序(倒序)
- 打印英文单词个数和出现频率
打印找出文章中最常用的20单词
将最常见的200个输写入文件
print('前20个次数最多的单词')
print(eassy[0:20])
print('使用的单词数量')
print(len(eassy))
print('有多少单词至少使用了5次')
#print(type(eassy[0]))
#print(eassy[0][1])
for i in range(len(eassy)):
if eassy[i][1] <5:
ind = i
break
print(len(eassy[0:ind]))
#将最常见的200个输写入文件
if len(eassy)>=200:
with open('word_count.txt','w') as f:
for i in range(200):
line = str(eassy[i])
f.writelines(line+'\n')