我有很长的引文列表,我需要提取每位作者的全名,发布年份,标题等。其中一个引文如下:
Joe Bob,Jane Doe和George H. Smith(2017)。有趣报告的标题:第2部分。报告系列号。 101,生成报告的地方,报告制作者部,城市,省,国家,44页。 ISBN :(打印)123-0-1234-1234-5; (在线)123-0-1234-1234-5。
所有引文都以相同的方式格式化。我现在被困住的部分与提取作者的全名有关。我在这里阅读有关如何通过执行[\\s,;]+
之类的操作从逗号,空格或分号分隔列表here中提取值的方法。如何使用逗号或单词'和'?
我认为'和'需要被视为一组字符,所以我尝试[^,|[and])]+
来匹配,
或字符集[and]
之间的空格,但这似乎不起作用。这个question类似于处理逗号或空格,但解决方案涉及隐式删除空格。
在获得此部分之后,我计划构建表达式的其余部分以捕获其他引用细节。因此,假设我们正在处理的字符串只是:
Joe Bob,Jane Doe和George H. Smith
并且应该捕获每个全名。
答案 0 :(得分:1)
这是一种可能的方法:
citation = """Joe Bob, Jane Doe and George H. Smith (2017). A title of an interesting report: Part 2. Report Series no. 101, Place for Generating Reports, Department of Report Makers, City, Province, Country, 44 pages. ISBN: (print) 123-0-1234-1234-5; (online) 123-0-1234-1234-5."""
citation = citation.replace(' and ', ',')
citation = citation[:citation.find('(')]
names = [name.strip() for name in citation.split(',')]
print names
给你:
['Joe Bob', 'Jane Doe', 'George H. Smith']
将and
转换为逗号,切换到年份开始的位置,并以逗号分隔。
或者以更紧凑的形式:
names = [name.strip() for name in citation[:citation.find('(')].replace(' and ', ',').split(',')]