明白了,我们可以在从Word文档读取数据时,直接处理换行符并转换为结构化的数据。这样在生成DataFrame之前就已处理好。以下是按您要求的代码逻辑:
- import tkinter as tk
- from tkinter import filedialog
- import pandas as pd
- import docx
- # 创建并配置窗口
- root = tk.Tk()
- root.withdraw()
- # 文件选择
- doc_path = filedialog.askopenfilename(title="选择一个.doc或.docx文件", filetypes=(("Word文件", "*.docx"), ("所有文件", "*.*")))
- folder_path = filedialog.askdirectory(title="选择保存目录")
- # 读取Word文档
- doc = docx.Document(doc_path)
- # 创建列表保存新数据
- new_data = []
- # 处理表格数据
- for table in doc.tables:
- for row_idx, row in enumerate(table.rows):
- if row_idx < 4: # 去除前四行
- continue
-
- row_data = [cell.text.strip() for cell in row.cells]
-
- # 检查第8, 9, 10列是否包含换行符
- split_needed = False
- split_parts = [[] for _ in range(3)]
-
- for i in range(3):
- if '\n' in row_data[7 + i]:
- split_needed = True
- split_parts[i] = row_data[7 + i].split('\n')
- else:
- split_parts[i].append(row_data[7 + i])
-
- if split_needed:
- # 创建新行
- for parts in zip(*split_parts):
- new_row = row_data[:7] + list(parts) + row_data[10:]
- new_data.append(new_row)
- else:
- new_data.append(row_data)
- # 创建DataFrame
- df = pd.DataFrame(new_data)
- # 保存数据到Excel
- save_path = f"{folder_path}/整理数据.xlsx"
- df.to_excel(save_path, index=False)
- print(f"数据已保存到:{save_path}")
复制代码
关键步骤说明:
1. 在读取Word表格时,根据单元格内容处理换行符,在第8, 9, 10列中识别换行符并拆分数据。
2. 根据拆分后的内容,生成多行数据以确保不同换行段的正确展现。
3. 生成的结构化数据再用作构建DataFrame,最后输出到Excel。
请确保安装了所需的Python库,包括`pandas`和`python-docx`。注意,这个代码假设表格中的换行符只会出现在第8, 9, 10列中。调整列索引可以适配不同结构的Word表格。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。