如何用Python高效解析PDF中的多层级表格(基于Tabula)
如何用Tabula高效提取PDF表格并避免单元格合并?
- 待解析表格为Marshalls plc 2023年度报告第92页的表格,目标是将其提取为符合指定CSV结构的DataFrame,允许用上下子表头填充NaN值。
- 当前使用Tabula库提取时遇到单元格合并问题:比如第1行(从零开始计数)的第5个元素本应为'MIP A'和'MIP B'两个独立单元格,却被合并成了'MIP A MIP B';正常每行(含首列高管姓名)应包含19个元素,但当前代码输出每行仅10个元素。
当前使用的代码:
import tabula dfs = tabula.read_pdf(doc, pages='94') # multiple_tables=True dfs row_number = 1 # Row number you want to access (zero-based) # Iterate over each DataFrame in the list and access a specified row of actual data for i, df in enumerate(dfs): if not df.empty: # Ensure DataFrame is not empty if len(df) > row_number: # Check if DataFrame has enough rows specified_row = df.iloc[row_number] # Access the specified row of data print(f"Data from row {row_number + 1} in Table {i+1}:") print(specified_row.values) # Print only the values from the specified row print(f"\nNumber of elements in row {row_number + 1} of Table {i+1}: {len(specified_row.values)}") else: print(f"Table {i+1} does not contain row {row_number + 1}.") else: print(f"Table {i+1} is empty.")
补充说明:需要方案能自动识别单元格边界、适配其他表格,因此以下针对特定内容的拆分方法不可行:
def split_specific_items(row_values): updated_values = [] for item in row_values: if item == 'MIP A MIP B': updated_values.extend(['MIP A', 'MIP B']) else: updated_values.append(item) return updated_values
内容的提问来源于stack exchange,提问作者Pelican_203
相关产品推荐
相关产品推荐

