我很难获得一段代码。我想循环遍历文件夹中的pdf文件,提取tabula包认为表是什么,将这些表提取到数据帧,并将特定pdf中的所有表写入一个csv文件。
我看了this post(和其他几个人),但我仍然遇到问题。似乎脚本循环遍历文件,提取一些表,但它似乎不会迭代文件,我无法将其写入csv文件中的所有数据帧。该脚本只是将最后一个写入csv。
这是我到目前为止所拥有的。任何帮助将不胜感激,具体来说,如何正确循环文件并将所有表从一个pdf写入一个csv文件。我很困难......
pdf_folder = 'C:\\PDF extract\\pdf\\'
csv_folder = 'C:\\PDF extract\\csv\\'
paths = [pdf_folder + fn for fn in os.listdir(pdf_folder) if fn.endswith('.pdf')]
for path in paths:
listdf = tabula.read_pdf(path, encoding = 'latin1', pages = 'all', nospreadsheet = True,multiple_tables=True)
path = path.replace('pdf', 'csv')
for df in listdf: (df.to_csv(path, index = False))
答案 0 :(得分:1)
就像@Scott Hunter提到的那样,你没有使用 CSV_folder
另外,我认为你要覆盖创建的.csv文件:
for df in listdf: (df.to_csv(path, index = False))
对于for循环的每次迭代,路径变量保持不变。
修改强> 您可能应该尝试这样做:
pdf_folder = 'C:\\PDF extract\\pdf\\'
paths = [pdf_folder + fn for fn in os.listdir(pdf_folder) if fn.endswith('.pdf')]
for path in paths:
listdf = tabula.read_pdf(path, encoding = 'latin1', pages = 'all', nospreadsheet = True,multiple_tables=True)
path = path.replace('pdf', 'csv')
df_concat = pd.concat(listdf)
df_concat.to_csv(path, index = False)