第3章:正则表达式 (English Resource)

文件enwiki-country.json.gz以下列方式存储Wikipedia的文章:

  • 整体为一个JSON文件,每行存储一篇文章;
  • 每行以JSON形式记录一个字典(dictionary)对象,包含如下键值对(key-value pairs):
    • title为键(key),对应{每篇文章的标题}为值(value);
    • text为键(key),对应{每篇文章的内容}为值(value)。
  • 使用gzip进行压缩。

编写程序以完成下列处理。

20. 读取JSON文档

读取该包含Wikipedia文章的JSON文件,输出标题为”United Kingdom”的文章内容。基于本题的输出结果,完成第21至29问。

21. 提取含有类别名称的行

提取文章中定义类别(Category)的相关行。

22. 提取类别名称

从定义类别的相关行中,进一步提取所有类别的名称。

23. 小节结构

提取文章中各个小节的名称及其所处的层级。在MediaWiki中,如果小节Section在原文中以==Section==的形式记录,则Section处于第1层级,依此类推。

24. 提取引用的多媒体

提取文章中所有被引用的多媒体文件。

25. 抽取Infobox信息

提取Infobox country中所有的字段名与其对应值,并将其存储为一个字典(dictionary)对象。

26. 删除强调标记

在第25问的基础之上,从值项中删除MediaWiki的强调标记(斜体字,粗体字,粗体加斜体,参考:备忘单)。

27. 删除内部链接标记

在第26问的基础之上,从值项中删除MediaWiki的内部链接标记,并将链接内容转换为文本(参考:备忘单)。

28. 删除MediaWiki标记

在第27问的基础之上,尽可能删去其它MediaWiki标记,以获取纯文本格式的国家基本信息。

29. 取得国旗图像的URL

利用Infobox的内容,获取国旗图像的URL(提示:可以调用MediaWiki API中的imageinfo,来将文件引用信息转换为对应的URL)。