Python & Pandas:将多行组合成一个单元格
Python & Pandas: combining multiple rows into single cell
我正在编写一个脚本,用于从 pdf 文件中提取文本并将其作为字符串插入到单个 csv 行中。使用 pdfplumbr
我可以成功提取文本,并将每个页面的文本作为单独的行插入到 csv 中。但是,我正在努力弄清楚如何将这些行合并到一个单元格中。我正在尝试 Pandas pd.concat
函数来组合它们,但到目前为止没有成功。
这是我的代码:
import pdfplumber
import pandas as pd
import csv
file1 = open("pdf_texts.csv", "w", newline="")
file2 = open("pdf_text_pgs.csv", "w", newline="")
writer2 = csv.writer(file2)
headers = ['text']
with pdfplumber.open('target.pdf') as pdf:
pdf_length = len(pdf.pages)
writer2.writerow(headers)
for page_number in range(0, pdf_length):
pdf_output = pdf.pages[page_number]
pdf_txt = pdf_output.extract_text().encode('UTF-8')
writer2.writerow([pdf_txt])
# this is my attempt for pd.concat
df = pd.read_csv("pdf_text_pgs.csv", 'r')
df_txts = df['text']
pdf_txt_df = pd.concat([df_txts], axis=0, ignore_index=True)
pdf_txt_df.to_csv('pdf_texts.csv', header=False, index=False)
但是,最终输出无法合并行,更糟糕的是似乎丢失了最后一行。关于如何处理这个问题的任何建议?感谢所有帮助。
您只需要将每个页面的文本存储在一个列表中,并在最后将它们全部组合起来。例如:
import pdfplumber
import csv
with pdfplumber.open('target.pdf') as pdf, \
open("pdf_text_pgs.csv", "w", newline="", encoding="utf-8") as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['text'])
text = []
for page in pdf.pages:
extracted_text = page.extract_text()
if extracted_text: # skip empty pages or pages with images
text.append(extracted_text)
csv_output.writerow([' '.join(text)])
我正在编写一个脚本,用于从 pdf 文件中提取文本并将其作为字符串插入到单个 csv 行中。使用 pdfplumbr
我可以成功提取文本,并将每个页面的文本作为单独的行插入到 csv 中。但是,我正在努力弄清楚如何将这些行合并到一个单元格中。我正在尝试 Pandas pd.concat
函数来组合它们,但到目前为止没有成功。
这是我的代码:
import pdfplumber
import pandas as pd
import csv
file1 = open("pdf_texts.csv", "w", newline="")
file2 = open("pdf_text_pgs.csv", "w", newline="")
writer2 = csv.writer(file2)
headers = ['text']
with pdfplumber.open('target.pdf') as pdf:
pdf_length = len(pdf.pages)
writer2.writerow(headers)
for page_number in range(0, pdf_length):
pdf_output = pdf.pages[page_number]
pdf_txt = pdf_output.extract_text().encode('UTF-8')
writer2.writerow([pdf_txt])
# this is my attempt for pd.concat
df = pd.read_csv("pdf_text_pgs.csv", 'r')
df_txts = df['text']
pdf_txt_df = pd.concat([df_txts], axis=0, ignore_index=True)
pdf_txt_df.to_csv('pdf_texts.csv', header=False, index=False)
但是,最终输出无法合并行,更糟糕的是似乎丢失了最后一行。关于如何处理这个问题的任何建议?感谢所有帮助。
您只需要将每个页面的文本存储在一个列表中,并在最后将它们全部组合起来。例如:
import pdfplumber
import csv
with pdfplumber.open('target.pdf') as pdf, \
open("pdf_text_pgs.csv", "w", newline="", encoding="utf-8") as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['text'])
text = []
for page in pdf.pages:
extracted_text = page.extract_text()
if extracted_text: # skip empty pages or pages with images
text.append(extracted_text)
csv_output.writerow([' '.join(text)])