我有一个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
让我们看看这里出了什么问题。我在猜测,但希望它们是相关的。在
convert_pdf_to_text()
函数返回一个包含PDF所有文本的单个长字符串。在", "
上的文本,这将产生一个字符串列表。在给定示例数据,该列表如下所示(每个元素位于单独的行中):
因为您在
", "
上拆分,而不考虑数据被格式化为行这一事实,所以最终在每个项中都有来自多行的内容。在filter()
来遍历这个列表并过滤掉所有不正确的。非空字符串为true,并且所有元素都是非空字符串,因此所有元素都可以通过。你的filter()
因此什么也不做。在你想要的似乎是这样的:
^{pr2}$在这里,我们首先拆分行,过滤掉其中没有逗号空格的行,然后根据在第一个逗号空格上拆分字符串返回一个列表列表。在
相关问题 更多 >
编程相关推荐