Sql 将文档节拆分为列表以导出Python
我对Python非常陌生,我正在尝试将一些法律文档分成几个部分,以便导出到SQL中。我需要做两件事:Sql 将文档节拆分为列表以导出Python,sql,python-3.x,parsing,document,Sql,Python 3.x,Parsing,Document,我对Python非常陌生,我正在尝试将一些法律文档分成几个部分,以便导出到SQL中。我需要做两件事: 通过目录定义章节编号,以及 根据定义的章节编号,拆分文档 目录列出了章节编号:1.1、1.2、1.3等 然后,文档本身被这些节号分解: 1.1“……文本……”, 1.2“……文本……”, 1.3“…文本…”等 类似于一本书的章节,但以升序小数分隔 我已经使用Tika解析了文档,并且我已经能够使用一些基本正则表达式创建一个节列表: import tika import re from tika
import tika
import re
from tika import parser
parsed = parser.from_file('test.pdf')
content = (parsed["content"])
headers = re.findall("[0-9]*[.][0-9]",content)
现在我需要这样做:
splitsections = content.split() by headers
var_string = ', '.join('?' * len(splitsections))
query_string = 'INSERT INTO table VALUES (%s);' % var_string
cursor.execute(query_string, splitsections)
对不起,如果这一切都不清楚。这还是很新鲜的
如果您能提供任何帮助,我们将不胜感激
“test.pdf”将是这样的文档:
目录在第一页到第三页(这是你得到章节号的地方)。然后,我想拆分的文本从第20页开始(第2.1节) 除了最后一个带DB的部件外,所有部件都经过了测试。代码也可以改进,但这是另一项任务。主要任务完成了 在列表
split_content
中有您想要的所有信息(即2.1和2.2之间的文本,然后是2.2和2.3之间的文本,依此类推,不包括节本身的num+名称(即不包括2.1 Continuation
,2.2 name
等等)
我将tika
替换为PyPDF2
,因为tika
没有提供此任务所需的工具(即,我没有找到如何提供我需要的页面数量并获取其内容)
如何使用:(可能的方法之一):
1) 将上述代码保存在my\u pdf\u code.py
2) 在python shell中:
import path.to.my_pdf_code as the_code
the_code.get_pdf_content('/home/username/Apollo_Investment_Fund_VIII_LPA_S1.pdf', 2, 4, 24, '[Signature Page Follows]')
非常感谢您的回复!我在上面的文档中添加了一个链接,表示“test.pdf”的外观。标题将在第一至第三页(2.1、2.2等)的目录中定义。然后,要分解的内容从第20页开始(第2.1节)。@junkbond916。是否要在节号之间获取文本片段?据我所知,您希望从第20页开始,以获得第2.1节和第2.2节之间的文本,然后是第2.2节和第2.3节之间的文本,依此类推。那么每一篇文章\每一章都是一样的。。。(根据第11.16节)。我说得对吗?如果是这样,那就不是一件容易的事情:)正如我从你的
re
中看到的,你只得到了节号,但是在这种情况下,没有节名的节号是无用的。需要考虑如何解决它。嗨,泰坦-你搞定了。这正是我想要做的。是的,我上面的代码只生成一个数字列表。最好使用整个章节名称(即“2.1续篇”)来打破文件。这真是个谜。再次感谢您的关注。我真的很感激。@junkbond916,我为你写了一段代码。对于未来-下次请尽可能多做,因为当有人需要做作者的工作时,stackoverflow
不欢迎这样的事情。不要忘记接受答案(在我的答案前面的两个向上/向下箭头下有一个灰色复选标记)。非常感谢-感谢您的帮助和建议。
import path.to.my_pdf_code as the_code
the_code.get_pdf_content('/home/username/Apollo_Investment_Fund_VIII_LPA_S1.pdf', 2, 4, 24, '[Signature Page Follows]')