超级详细备注的代码:Python帮助您高效通过英语六级考试

超级详细备注的代码:Python帮助您高效通过各种英语考试

标题:限时免费|领取大学英语六级考试葵花宝典

联系小编,获取源码和30份六级真题。

# -*- coding:utf-8 -*-

#作者:公众号:湾区人工智能
#功能:实现分析各种英语历年考试真题,比如,中考,高考,四级,六级,雅思,托福,GRE,GMAT
#(pdf,Word,TXT格式数据,都能解析,不论是1个文件还是多个文件),统计单词出现次数,词频逆排序,
#从出现次数最多的单词开始记忆,提高背诵效率,做成单词红宝书,快速高效通过各种英语考试。
#时间:#2019-03-02 463710 March Saturday the 08 week, the 061 day SZ
#环境:Python3.7,编译器,sublime text,系统:Unix
#使用方法:把此代码文件和英文文件放在一个新建文件夹里,然后运行,就会产生单词红宝书。
#我把翻译部分屏蔽了,如果想要翻译,自己去后面取消屏蔽
#注意:文件夹里面不要有其他多余文件夹或者文件,要不然统计数目会有出入。但可以保证得到的单词没有重复的

几个函数的设计

读取PDF文件所有单词

import re #正则化库

#引入解析pdf文件的库,处理pdf文件
import pdfplumber #解析pdf文件
def pdf_file():
    pdf = pdfplumber.open(filename)
    raw_words = '' #保存所有的单词
    for page in pdf.pages: 
        raw_words = raw_words + str(page.extract_words()) #两页,两个列表
    raw_words = raw_words.lower()

    words = re.sub('decimal', '', raw_words) #删除字符串里面所有的decimal,
    words = re.sub('top', '', words)
    words = re.sub('bottom', '', words)
    #words = re.sub('x', '', words)
    words = re.sub('text', '', words)
    
    words = re.findall('[a-z]+', words) #得到所有的英文单词,排除了汉语单词,各种符号
    
    while 'x' in words:
        words.remove('x')
    return words 

读取Word文件所有单词

#读取docx中的单词
import docx
def docx_file():

    file=docx.Document(filename)
    raw_words = '' #保存所有的单词
    #输出每一段的内容
    for para in file.paragraphs:
        raw_words += para.text #把每段的单词添加到字符串里面
    raw_words = raw_words.lower()
    words = re.findall('[a-z]+',raw_words) #得到所有的英文单词,排除了汉语单词,各种符号
    return words 

读取TXT文件所有单词

#读取TXT中的单词
def txt_file():
    with open(filename)  as file:
        raw_words = file.read().lower()
        words = re.findall('[a-z]+',raw_words) #得到所有的英文单词,排除了汉语单词,各种符号
    return words 

统计单词数目

按照词频逆排序,然后从出现个数最多的单词开始记忆,迅速提高学习效率

#统计单词数目,按照词频逆排序,然后从出现个数最多的单词开始记忆,迅速提高学习效率
def count(words):
    words_set = set(words)
    number_words = len(words) #六级题总共出现的单词数目,包括重复的单词数目
    number_words_set = len(words_set) #需要记忆的单词个数
    print('需要记忆的单词个数',number_words_set)
    print('总共出现的单词数目',number_words)

    '''
    #利用函数Counter统计次数
    count_words = Counter(words)
    print(count_words)
    number_per_words = count_words.items()
    #print(number_per_words)
    '''

    #用hash计算每个单词出现次数
    hash = {}
    for word in words:
        if word not in hash:
            hash[word] = 1
        else:
            hash[word] += 1
    sorted_hash = sorted(hash,  reverse = False) #按照ABC顺序排列,没有重复单词,只有英文单词
    #sorted_hash = sorted(hash.values(), reverse = True)
    #print(sorted_hash)
    data = sorted(hash.items(), key=lambda x: x[1], reverse=True) #按照出现次数排列,没有重复单词
    return data #返回列表,每个元素是一个元组,左边是单词,右边是单词出现次数

爬取进行翻译

#爬取有道翻译网页进行翻译
import urllib.request
import urllib.parse
import json
import time
#进行单词翻译
#https://blog.csdn.net/qaz3171210/article/details/51247230
def translate(word):
    content = word 
    url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    data = {}
    data['i'] = content
    data['from']= 'AUTO'
    data['to'] = 'AUTO'
    data['smartresult'] = 'dict'
    data['client'] = 'fanyideskweb'
    data['salt'] = '1527480457870'
    data['sign'] = 'abf2d2301303ac6d8ae48c532c631060'
    data['doctype'] = 'json'
    data['version'] = '2.1'
    data['keyfrom'] = 'fanyi.web'
    data['action'] = 'FY_BY_REALTIME'
    data['typoResult'] = 'false'
    data = urllib.parse.urlencode(data).encode('utf-8')
    time.sleep( 6 )  #间隔几秒调取网页翻译功能,防止被屏蔽
    response = urllib.request.urlopen(url,data)
    html = response.read().decode('utf-8')
    target = json.loads(html)
    #print(target['translateResult'][0][0]['tgt'])
    return target['translateResult'][0][0]['tgt']
    #print(word,end = '              ')
    #print("翻译结果:%s" % (target['translateResult'][0][0]['tgt']))

主函数开始

获取文件夹里所有文件

#主函数开始
import os
file_output = '/Users/apple/Documents/ST/python/英语项目/雅思红宝书.csv'
filenames = os.listdir(os.getcwd()) #all the filenames in the current folder
all_words = []
#words = []
for filename in filenames:

删除多余文件

    #排除多余的文件,防止重复计数
    if '.csv' in filename:
        continue
    if '.py' in filename:
        continue
    print(filename)

####分别读取每个文件里面的单词

    #统计每个pdf文件里面的单词,并且放到一个列表words里面
    if '.pdf' in filename: 
        words = pdf_file()
        print('len_words is :', len(words))

    #统计每个Word文件里面的单词,并且放到一个列表words里面
    if '.docx' in filename:
        words = docx_file()
        print('len_words is :', len(words))

    #统计每个TXT文件里面的单词,并且放到一个列表words里面
    if '.txt' in filename:
        words = txt_file()
        print('len_words is :', len(words))

合并所有单词

    #统计所有文件中的英文单词,并且放进列表里
    #all_words = all_words.extend(words)
    all_words = all_words + words 
    print('len_all_words is :', len(all_words))

调用计数函数统计单词

data = count(all_words) ##得到列表,每个元素是一个元组,左边是单词,右边是单词出现次数
word_text = ''
for w in data:
    word = w[0] #获取每个元组里的单词
    #print(chinese)
    word_text = word_text + word + '\n'#所有单词按照词频降序排列写入一个字符串里

进行单词翻译

    这里需要爬取网页翻译,耗费大量时间,可以自己选择运行
    chinese = translate(word)
    word_text = word_text + chinese + '\n'#所有单词写入一个

生词单词红宝书

用Excel打开

open(file_output,'a').write(word_text)
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值