使用Python解析pdf并提取Author和Book nam

2024-06-01 04:30:18 发布

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

我有一个pdf格式的邮件参考列表。邮件列表有一个非常通用的格式,即作者姓名后接书名。 考虑以下示例:

美国阅读列表

民主理论

•达尔,民主理论序言

•熊彼特、资本主义、社会主义和民主(仅导言和第四部分)

•自由民主的男子汉、生活和时代

•达尔,民主及其批评者

现在,我尝试使用pdf miner解析pdf并创建一个列表,其中第一个索引是作者姓名,第二个索引是书的名称,如下所示:

【达尔,民主理论序言】

我尝试使用分割功能,因为作者名后面有一个逗号和一个空格。但是我没有得到正确的结果。 有人能帮忙吗?在

def extract():
    string = convert_pdf_to_txt("/Users/../../names.pdf")
    lines = list(filter(bool, string.split('\n')))
    for i in lines:
        check.extend(i.split(','))
    x=remove_numbers(check)
    remove_blank= [x for x in x if x]
    combine_two = [remove_blank[x:x + 2] for x in xrange(0,len(remove_blank), 2)]
    print combine_two

Tags: in列表forstringpdfcheck格式邮件
1条回答
网友
1楼 · 发布于 2024-06-01 04:30:18

让我们看看这里出了什么问题。我在猜测,但希望它们是相关的。在

  1. 您的convert_pdf_to_text()函数返回一个包含PDF所有文本的单个长字符串。在
  2. 分割", "上的文本,这将产生一个字符串列表。在

给定示例数据,该列表如下所示(每个元素位于单独的行中):

Dahl
Preface to Democratic Theory(line break)(bullet)(tab)Schumpeter
Captitalism
Socialism
and Democracy (Introduction and part IV only)(line break)(bullet)(tab)Machpherson
Life and Times of Liberal Democracy(line break)(bullet)(tab)Dahl
Democracy and its Critics

因为您在", "上拆分,而不考虑数据被格式化为行这一事实,所以最终在每个项中都有来自多行的内容。在

  1. 现在您使用filter()来遍历这个列表并过滤掉所有不正确的。非空字符串为true,并且所有元素都是非空字符串,因此所有元素都可以通过。你的filter()因此什么也不做。在

你想要的似乎是这样的:

^{pr2}$

在这里,我们首先拆分行,过滤掉其中没有逗号空格的行,然后根据在第一个逗号空格上拆分字符串返回一个列表列表。在

相关问题 更多 >