Python - 将 header 插入 csv
Python - inserting header into a csv
我正在开发一个脚本,它通过循环从目录中的所有 pdf 文件中提取文本,并将它们插入到 csv 文件的各个单元格中。我可以成功地将输出写入单元格。但是,我需要 csv 文件包含 header "text"
以便与另一个 csv 合并。到目前为止,我尝试用 csv_writer
插入 header 是 运行 遇到困难。
例如,下面的代码成功地从 pdf 中提取和插入文本,但为每个提取的文件写入一个新的 header:
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)])
我尝试过的另一种方法同样不成功。我尝试先将 header 写入 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)])
我们非常欢迎任何关于应对这一挑战的解决方法或更好方法的建议。
您可以先打开 csv,插入您的 header,然后遍历您的 PDF:
import pdfplumber
import csv
import glob
pdfs = glob.glob("dir\*.pdf")
with open("pdf_output.csv", "a", newline="", encoding="utf-8") as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['text'])
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)])
或者只检查它是否是第一次迭代:
import pdfplumber
import csv
import glob
pdfs = glob.glob("dir\*.pdf")
for i, pf in enumerate(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)
if i == 0: csv_output.writerow(['text'])
text = []
for page in pdf.pages:
extracted_text = page.extract_text()
if extracted_text:
text.append(extracted_text)
csv_output.writerow([' '.join(text)])
我正在开发一个脚本,它通过循环从目录中的所有 pdf 文件中提取文本,并将它们插入到 csv 文件的各个单元格中。我可以成功地将输出写入单元格。但是,我需要 csv 文件包含 header "text"
以便与另一个 csv 合并。到目前为止,我尝试用 csv_writer
插入 header 是 运行 遇到困难。
例如,下面的代码成功地从 pdf 中提取和插入文本,但为每个提取的文件写入一个新的 header:
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)])
我尝试过的另一种方法同样不成功。我尝试先将 header 写入 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)])
我们非常欢迎任何关于应对这一挑战的解决方法或更好方法的建议。
您可以先打开 csv,插入您的 header,然后遍历您的 PDF:
import pdfplumber
import csv
import glob
pdfs = glob.glob("dir\*.pdf")
with open("pdf_output.csv", "a", newline="", encoding="utf-8") as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['text'])
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)])
或者只检查它是否是第一次迭代:
import pdfplumber
import csv
import glob
pdfs = glob.glob("dir\*.pdf")
for i, pf in enumerate(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)
if i == 0: csv_output.writerow(['text'])
text = []
for page in pdf.pages:
extracted_text = page.extract_text()
if extracted_text:
text.append(extracted_text)
csv_output.writerow([' '.join(text)])