python去除英文_Python学习实例2,英文单词词频统计

本文介绍了使用Python进行PDF文档内容读取,并通过正则表达式和拼写检查库进行英文单词处理,实现词频统计。作者分享了详细代码,包括从PDF中提取文本、去除非字母字符、过滤停用词、统计词频及输出结果。同时,提供了词频在1到50之间的单词保存。推荐《把时间当做朋友》一书。
摘要由CSDN通过智能技术生成

3b27418bc8b3125d5c738f8442275198.png
跟上时代的潮流,加快自己的脚步,Python持续学习中。。。。
我的开发环境:
Win10 64位系统
Python3.9
IDE:VSCode

英文单词词频统计,是最近学习练手的一个实例,我觉得蛮有用处的,所以就把它发布出来了,与大家交流学习,也为需要的人提供些参考。

至于我为什么做这个 英文单词词频统计 这个实例,其实也是有缘由。我最近在读李笑来老师的《把时间当做朋友》,书中详细的说了《TOEFL核心词汇21天突破》这本书是怎么写出来了,其中最有技术含量也最有趣的就是用编程统计 TOEFL历年语库的词频。我顿时来了兴趣,我正好在学习python,真是个好机会练练手。

接下来,就是淅沥啪啦的一顿操作。主要就是 谷歌百度,写,改,测;谷歌百度,写,改,测。。。。。直至完成。


话不多说,直入主题。

1、本实例要点:

  • 下载《精读老托福阅读真题100篇》pdf文档,作为分析的数据源。(当然也可以准备自己的英文pdf文档)
zhimg_answer_editor_file_pdf.svg
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、效果图

6e2a4ac26d8fc26ed0ff37defc1431aa.png

结尾:

Python,让人比较轻松的完成一个实例,还是很有快感的!

说个题外话,推荐《把时间当做朋友》。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值