我正在开发一个脚本,该脚本通过循环从目录中的所有 pdf 文件中提取文本,并将它们插入到 csv 文件的各个单元格中。我可以成功地将输出写入单元格。但是,我需要 csv 文件包含"text"
用于与另一个 csv 合并的标题。到目前为止,我插入该标题的尝试csv_writer
遇到了困难。
例如,下面的代码成功地从 pdf 中提取和插入文本,但为每个提取的文件写入一个新的标题:
import pdfplumber
import csv
import glob
pdfs = glob.glob("dir\*.pdf")
for pf in pdfs:
with pdfplumber.open(pf) as pdf, \
open("pdf_output.csv", "a", newline="", encoding="utf-8") as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['text']) # code for inserting header
text = []
for page in pdf.pages:
extracted_text = page.extract_text()
if extracted_text:
text.append(extracted_text)
csv_output.writerow([' '.join(text)])
我尝试的另一种方法同样不成功。我尝试先将标头写入 csv,然后将循环的输出附加到 csv。但是,由于某种原因,pdf 输出的格式被完全破坏,文本分散在多个单元格而不是单个单元格中。
pdfs = glob.glob("dir\*.pdf")
# code for writing header
file = open("pdf_output.csv", "w", newline="")
writer = csv.writer(file)
headers = ['text']
writer.writerow(headers)
for pf in pdfs:
with pdfplumber.open(pf) as pdf, \
open("pdf_output.csv", "a", newline="", encoding="utf-8") as f_output:
csv_output = csv.writer(f_output)
text = []
for page in pdf.pages:
extracted_text = page.extract_text()
if extracted_text:
text.append(extracted_text)
csv_output.writerow([' '.join(text)])
任何有关此挑战的变通办法或更好方法的建议都将受到欢迎。