规范引用的分析器。

citation-parser的Python项目详细描述


规范参考文献(例如“Hom.il.公司1124-125”)以一致的方式使用标点符号,这意味着我们可以定义一个形式语法来处理它们。

当遇到参考“Hom”时。il.公司1124-125”,人类读取器将对其进行如下解析:

  • 数字前面的文本包含有关被引用作品和作者的信息
  • 连字符用于指定文本段落的范围,例如第124行到第125行;
  • 分号将引用与sanme引用中的另一个引用分隔开(通常将同一作品或不同作品的多个引用链接在一起);
  • 逗号分隔了被引用作品的层次结构。在上面的例子中,1124-5表示从第1册第124行到第1册第125行
  • 当引文范围是一个范围时,相同的层次结构被折叠:1.124-1.125既可以写成1.124-125,也可以写成1.124s,而不会对人类读者造成任何信息损失。

引用解析器由一个lexer、一个解析器和一个用antlr编写并编译成python代码的树解析器组成。然后将解析的引用序列化为json。

例如:

>>> cp = CitationParser()
>>> cp.parse("Hom. Il. 1,124-125")
[{'work': u'Hom. Il.', 'scp': {'start': ['1', '124'], 'end': ['1', '125']}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java试图使用JavaFX2实现“插入符号浏览”   三个给定集合中两个集合的java交集?   数组如何在java中从csv文件的元素集中随机选择?   java从变量插入到Jtable,从DB插入   java如何在静态方法的末尾返回变量   java另一个JPA问题   java收藏家。按两列分组不起作用   将java值改为下一个千,而不是最近的千   JavaSpringDataREST:如何通过另一个对象的键进行搜索?   java Spring MVC:HTTP Status 404/SimpleMVC/WEB_INF/HelloPage。jsp   java应用程序光盘在OpenJdk中可用吗?   java在数组中的特定点添加字符   java如何用Mockito模拟方法调用   java从JList获取数据   我们可以在Java中搜索不同IMAP电子邮件帐户中的电子邮件吗?   计算表达式的数学Java算法   未构建Maven的java服务器组件   java调用部署在远程计算机上的会话bean的方法   java XML:迭代地获取每个节点元素的节点值或文本内容