跟上时代的潮流,加快自己的脚步,Python持续学习中。。。。
我的开发环境:
Win10 64位系统
Python3.9
IDE:VSCode
英文单词词频统计,是最近学习练手的一个实例,我觉得蛮有用处的,所以就把它发布出来了,与大家交流学习,也为需要的人提供些参考。
至于我为什么做这个 英文单词词频统计 这个实例,其实也是有缘由。我最近在读李笑来老师的《把时间当做朋友》,书中详细的说了《TOEFL核心词汇21天突破》这本书是怎么写出来了,其中最有技术含量也最有趣的就是用编程统计 TOEFL历年语库的词频。我顿时来了兴趣,我正好在学习python,真是个好机会练练手。
接下来,就是淅沥啪啦的一顿操作。主要就是 谷歌百度,写,改,测;谷歌百度,写,改,测。。。。。直至完成。
话不多说,直入主题。
1、本实例要点:
- 下载《精读老托福阅读真题100篇》pdf文档,作为分析的数据源。(当然也可以准备自己的英文pdf文档)
TOEFL100.pdf
778K
·
百度网盘
- python如何读取pdf文档内容
- 如何进行英文单词拼写的坚持
- 如何用正则去除字母之外的其他字符
- 如何过滤不需要分析的单词
- 如何统计单词的出现次数以及进行排序
2、代码
import fitz
import re
import enchant
#获取pdf文件的内容
def get_text():
with fitz.open('E:pythonTOEFL100.pdf') as doc:
text = ""
for page in doc:
text += page.getText().strip()
return text
#创建英文拼写检查库
dicEnglish = enchant.Dict("en_US")
#去除pdf内容的大小写
strText=get_text().lower()
#pdf内容去除字母之外的其他字符
s1=re.sub("[^A-Za-z]"," ",strText)
#以空格分割pdf内容,包括连续空格
words =s1.split()
#列举不需要参与分析的单词
stopwords = {'a','b','c','d','s','is','to','of','on','in','the','and','that','as','it','for','by','was','from','are','be','were','with','or','an','at','they','not','one','its','no','if','do','up','so'}
#得到需要分析的单词的集合
resultwords = [word for word in words if word.lower() not in stopwords]
#分析每个单词的出现次数
counts = {}
for word in resultwords:
counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
# 将其按照词出现数量按照降序排列
items.sort(key = lambda x : x[1], reverse = True)
#打印出词频最高的前100个单词。
with open("E:Python词频最高前100单词.txt", 'w', encoding='utf-8') as f:
for i in range(100):
word, count = items[i]
f.write('{:^10}{:^10}'.format(word, count))
f.write("n") # 换行
print('{:^10}{:^10}'.format(word, count))
#打印出词频在1到50的单词
with open("E:Python词频1到50.txt", 'w', encoding='utf-8') as f:
cnt=0
for item in items:
word=item[0]
count = item[1]
#词频在1到50,且是英文单词
if count>=1 and count<=50 and dicEnglish.check(word):
#写文件
cnt+=1
f.write('{:^10}{:^10}'.format(word, count))
f.write("n") # 换行
print('{:^10}{:^10}'.format(word, count))
print("共保存"+str(cnt)+"个单词")
3、需要的组件
pip3 install pymupdf 读取pdf的组件
pip3 install pyenchant 英文单词检查组件
4、效果图
结尾:
Python,让人比较轻松的完成一个实例,还是很有快感的!
说个题外话,推荐《把时间当做朋友》。