如何用Python Pandas将PDF转CSV?解决时间列AM换行问题
解决PDF转CSV时Time列AM/PM被拆分的问题
PDF文本提取时,因原文档布局问题,Time列的AM/PM后缀会被单独拆分为下一行,导致时间格式不完整。可以通过以下修改后的代码修复这个问题,同时完成PDF到CSV的转换:
import re import pdfplumber import pandas as pd file = "Battery Voltage.pdf" lines = [] with pdfplumber.open(file) as pdf: for page in pdf.pages: text = page.extract_text() for line in text.split('\n'): stripped_line = line.strip() # 判断当前行是否是AM/PM后缀,是的话合并到上一行 if re.fullmatch(r'(AM|PM)', stripped_line, re.IGNORECASE): if lines: lines[-1] = f"{lines[-1]} {stripped_line}" continue lines.append(stripped_line) # 提取表头与数据(根据实际PDF列调整) columns = ["Time", "Battery Voltage (V)"] data = [] header_skipped = False for line in lines: # 跳过表头行 if not header_skipped: header_skipped = True continue # 用至少两个空格拆分列,避免时间内的空格干扰 row_parts = re.split(r'\s{2,}', line) if len(row_parts) == len(columns): data.append(dict(zip(columns, row_parts))) # 生成CSV文件 df = pd.DataFrame(data) df.to_csv("battery_voltage.csv", index=False) print("转换完成,已生成battery_voltage.csv")
关键处理逻辑:
- 识别单独成行的AM/PM,将其合并到上一行的时间字段末尾,修复完整时间格式
- 使用多空格作为列分隔符拆分每行数据,避免时间中的空格导致列拆分错误
- 跳过表头行后,将整理好的行数据转为DataFrame,最终导出为CSV
内容的提问来源于stack exchange,提问作者aparna podili
相关产品推荐
相关产品推荐

