一个Python面试题

来源:互联网 发布:香港网络电视直播软件 编辑:程序博客网 时间:2024/06/07 17:34

这是我遇到的一个Python面试题,因为正则表达式用的不熟悉,所以直接没参加。最后心里过意不去,就试着写了写:

问题如下:

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

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

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

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

          mt_word.txt有如下几点要求:

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

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


最后实现代码如下:

from bs4 import BeautifulSoupimport resoup = BeautifulSoup(open('mt.html','r', encoding='UTF-8'),'html.parser')str1=""for k in soup.find_all('p'):     str1 += re.sub(r'(<.*?\w>|\(|\)|\"|\,|\.|\;|\/|\d|\$|\%|\'|\<|\-|\>|\–)', '', str(k))maps ={}for v in  re.sub(r"\s+","|",str1).split("|"):    if v in maps:        maps[v] += 1    else:        maps[v] = 1lis = sorted(maps.items(), key = lambda asd:asd[1],reverse=True)print(lis)for i in lis:    with open("mt_words.txt", "a+", -1, "utf-8") as f:        f.write(i[0] + '\t' + str(i[1]) + "\n")


写的不是很好,有改进的空间,仅供参考



原创粉丝点击