pyhton3正则表达式应用(面试题)
来源:互联网 发布:java ant pdf 编辑:程序博客网 时间:2024/06/16 06:16
请完成一个程序,并能按步骤实现以下功能:
1. 下载https://en.wikipedia.org/wiki/Machine_translation 页面的
内容并保存为mt.html
需要编写代码来下载页面。
2. 统计mt.html中
标签内下所有单词以及数目并存储到mt_word.txt中。
mt_word.txt有如下几点要求:
a) 每个单词一行。单词在前,单词出现的次数在后,中间用Tab(\t)进行分隔。
b) 单词要按照单词数目从多到少的顺序进行排列。
比如说单词a出现了100次,单词b出现了10次,则单词a要在单词b的前面。
题目解析:
理清思路是解题的关键!
首先我们可以利用urllib.request里的urlopen方法来抓取网页的源代码
利用open函数新建一个mt.html的文件将抓取的源代码写入.
然后读取刚刚创建的文件,将内容利用正则表达式的findall方法提取出
标签内所有单词
然后利用sub方法将文件内的非字母字符替换为空格,再利用split将字符串以空格为界分割至列表.
最后利用列表操作计算出每个单词的次数存入二维列表,然后将列表根据数字排序后循环将包含单词以及数字的列表写入文件,关闭文件.
代码如下:
import reimport urllib.requestdef grab(): web_addr = "https://en.wikipedia.org/wiki/Machine_translation" # 请求网页 file = urllib.request.urlopen(web_addr) # 读取网页源码 data = file.read() # 打开文件写入 new_file = open("mt.html", "wb") new_file.write(data) new_file.close()def grab_word(): #打开文件读取 new_file = open("mt.html", "r") data = new_file.read() new_file.close() # 利用正则匹配处要求的内容 word_list = re.findall(r"<p>.*</p>", data) # 将非字母替换为空 words = re.sub(r"[^A-Za-z]", " ", (re.sub(r"<[^>]+>", " ", str(word_list)))) # 将所有非空单词放入列表 last_list = re.findall(r"\S+", str(words)) # 定义空列表用于接受最终的数据 list1 = [] # 去重 a = set(last_list) # 便利去重后的列表依次判断在总列表内出现的次数,并将单词与次数放入list1列表内 for word in a: list1.append([word,str(last_list).count(word)]) # 根据列表内的子列表的1下标进行排序 list1.sort(key=lambda x: x[1],reverse=True) # 打开文件写入 with open("mt_word.txt","w") as last_file: for i in list1: last_file.write(i[0]+"\t"+str(i[1])+"\n")if __name__ == '__main__': grab() grab_word()
阅读全文
0 0
- pyhton3正则表达式应用(面试题)
- 正则表达式面试题
- 正则表达式面试题一则
- 前端面试题-正则表达式
- 面试题:正则表达式匹配
- 面试题53:正则表达式匹配
- 关于正则表达式的一道面试题
- 面试题57:正则表达式匹配*
- 面试题53:正则表达式匹配
- 剑指offer面试题:正则表达式匹配
- 面试题53:正则表达式匹配
- 关于正则表达式的一道面试题
- 面试题53. 正则表达式匹配
- python正则表达式常见面试题
- 正则表达式面试题:32fdsfd8fds0fdsf9323k32k中找出3280932332
- 《剑指Offer》学习笔记--面试题53:正则表达式匹配
- 【剑指Offer学习】【面试题53:正则表达式匹配】
- 面试题_53——正则表达式匹配
- scrapy入门
- RabbitMQ官方中文入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)
- 【C语言】移位运算符、位运算符、逻辑运算符
- 51Nod-1091-线段的重叠
- rhel与aix中,fsck -f的区别
- pyhton3正则表达式应用(面试题)
- beego利用casbin进行权限管理——第二节 策略存储
- RabbitMQ官方中文入门教程(PHP版) 第四部分:路由(Routing)
- java程序员从笨鸟到菜鸟之(二十九)集合之Map
- C# 生成二维码
- Angulr后台管理平台通过Angular加载页面过程
- SSM整合开发的小Demo----毕业设计管理系统之学生模块
- LeetCode268. Missing Number解题
- SSM整合开发的小Demo----毕业设计管理系统之教师模块