• 面试题(三)


    请完成一个程序,并能按步骤实现以下功能:

    1. 下载https://en.wikipedia.org/wiki/Machine_translation 页面的内容并保存为mt.html

           需要编写代码来下载页面。

    2. 统计mt.html中<p>标签内下所有单词以及数目并存储到mt_word.txt中。

           mt_word.txt有如下几点要求:

           a) 每个单词一行。单词在前,单词出现的次数在后,中间用Tab( )进行分隔。

           b) 单词要按照单词数目从多到少的顺序进行排列。比如说单词a出现了100次,单词b出现了10次,则单词a要在单词b的前面。

    3. 提取出mt.html中所有的年份信息(比如说页面中的1629, 1951这些的四位数字就是年份)存储到mt_year.txt中。

           mt_year.txt有如下几点要求:

           a) 每个年份是一行。

           a) 年份需要从过去到现在的顺序进行排列。比如说文章中出现了2007和1997,则1997需要排在2007的前面。

    要求:

    1. 仅限python编程,而且仅仅可以使用python自带的函数或库。

    2. 提交可执行的程序以及mt.html, mt_word.txt, mt_year.txt。

    3. 限定在一个小时内完成。

    # 1. 下载https://en.wikipedia.org/wiki/Machine_translation 页面的内容并保存为mt.html需要编写代码来下载页面。
    session = requests.session()
    response = session.get(url="https://en.wikipedia.org/wiki/Machine_translation")
    with open('mt.html','wb') as f:
        f.write(response.content)
    
    
    # 2、统计mt.html中<p>标签内下所有单词以及数目并存储到mt_word.txt中
    
    # 解析页面,拿到所有的p标签中的文本
    soup = BeautifulSoup(response.text,features="lxml")
    tag2 = soup.find_all(name='p')
    list_p = []
    for i in tag2:
        list_p.append(i.get_text())
    
    # 将所有的文本合并成一个字符串
    str_p = ' '.join(list_p)
    word_set = set()
    for word in str_p.split():
        word = word.strip(',.()""/; ')
        word_set.add(word)
    # word_dict = {}
    word_list = []
    for word in word_set:
        if word == '':
            continue
        # word_dict[word] = str_p.count(word)
        dict2 = {word:str_p.count(word)}
        word_list.append(dict2)
    
    # 将单词按照数目反序排列,然后写入文件
    blist = sorted(word_list,key = lambda x:list(x.values())[0],reverse =True)
    with open('mt_word.txt','w') as f:
        for item in blist:
            for k,v in item.items():
                line = k + '	' + str(v) + '
    '
                f.write(line)
                
    # 3、提取出mt.html中所有的年份信息(比如说页面中的1629, 1951这些的四位数字就是年份)存储到mt_year.txt中
    year = re.compile(r'd{4}')
    years_list = re.findall(year,response.text)
    years_list = sorted(list(set(years_list)))
    with open('mt_year.txt','w') as f:
        for year in years_list:
            line = year + '
    '
            f.write(line)
    答案
  • 相关阅读:
    Android Studio 2.2以上支持了Cmake的配置JNI的相关参数
    Unable to instantiate receiver xxx.receiver.NetworkReceiver异常
    关于imageview matrix
    Android NDK开发 JNI操作java构造方法,普通方法,静态方法(七)
    COOKIE和SESSION的区别
    Android NetworkInterface 的 name
    Android ROM资源文件存放位置
    selinux
    当WebView运行在特权进程时抛出安全异常,Hook方式解决方案(包含对Android 8.0的处理)
    Android判断当前是否在主线程
  • 原文地址:https://www.cnblogs.com/skiler/p/6938791.html
Copyright © 2020-2023  润新知