Python中相似行的解析

2024-09-28 17:28:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大约200个出版物引用,我正试图将它们解析为具有不同标题的列。每个出版物大约有200个字符长,用逗号分隔需要分析的不同字段。字段包括:期刊、标题、主要作者和作者。你知道吗

以下是出版物参考示例:

J.Doe、B.Smith、G.J.Martin、Phillip Jones。示例出版物标题,示例期刊,v.1002010,第C12000页。你知道吗

最后应该放弃

    Journal: Example Journal    
    Title: Example Publication Title    
    Lead Author: J. Doe    
    Authors: J. Doe, B. Smith, G.J Martin, Phillip Jones    

以下是20个例子: https://docs.google.com/spreadsheets/d/1PRtIUobmjKxF7g9v5a9tzbfstec8P8JWhV7uyv_aMM0/edit?pref=2&pli=1#gid=0

我遇到的问题是,许多出版物的差异很小。有些人有三个正式的J.Doe,B.Smith,G.J.Martin。。。有些人只有两个作者的形式乔多伊,乔治乔马丁。所以有些作者可以用名字缩写,有时不用。你知道吗

我需要将上面提到的所有字段解析为具有各自标题的列。你知道吗


Tags: 标题示例titleexample作者出版物journal期刊
2条回答

我可以尝试使用nameparser模块来解析名称:https://pypi.python.org/pypi/nameparser

然后看看它是否不能解析一个名字,并假设这就是标题?你知道吗

这里有一个正则表达式,它可以得到其中的大部分。它利用了authors字段(几乎)总是以

and Last Author.

或者很少

& Last Author

这是正则表达式。它符合你提供的17/20。它不匹配的3不使用上述作者约定。此外,在出版物包含,的情况下,标题/出版物也会出错

就像Potsdam, Germany。最好的办法可能是修复与作者约定不匹配的少数引用(在最后一位作者之前插入一个and),并手动修复出现错误的少数标题出版物。你知道吗

^(.+ (?:and|&) (?:(?:[A-Z]\.-?)+ [A-Z][a-z]+\.{1,2}|[A-Z][a-z]+(?:, (?:[A-Z]\.)+\.?))) (.+),(.+), (v\..+), (\d{4}), (p\.\s*.*)\.$

Here is an example使用你给出的20个例子。你知道吗

相关问题 更多 >