明白了!你希望将8, 9, 10列中有换行符的行,根据换行符拆分成两行。以下是实现这一功能的具体代码:
import tkinter as tk
from tkinter import filedialog
import pandas as pd
import docx
# 创建并配置窗口
root = tk.Tk()
root.withdraw()
# 打开文件选择对话框,选择Word文件
doc_path = filedialog.askopenfilename(title="选择一个.doc或.docx文件", filetypes=(("Word文件", "*.docx"), ("所有文件", "*.*")))
# 打开文件夹选择对话框,选择保存目录
folder_path = filedialog.askdirectory(title="选择保存目录")
# 读取Word文档
doc = docx.Document(doc_path)
# 提取表格数据
data = []
for table in doc.tables:
for row in table.rows:
new_row = [cell.text.strip() for cell in row.cells]
data.append(new_row)
# 创建DataFrame并去掉前四行
df = pd.DataFrame(data[4:])
# 创建新的DataFrame用于存储处理后的数据
new_data = []
# 循环处理每一行
for idx, row in df.iterrows():
# 分别处理8, 9, 10列
split_rows = [row]
for col_idx in [7, 8, 9]: # 对应第8, 9, 10列
cell_value = row[col_idx]
if '\n' in cell_value:
parts = cell_value.split('\n')
# 创建新行并替换含换行符的列
for i, part in enumerate(parts):
if i == 0:
split_rows[0][col_idx] = part
else:
new_row = row.copy()
new_row[col_idx] = part
new_data.append(new_row)
# 如果该行没有被分割,直接添加
if len(split_rows) == 1:
new_data.append(row)
# 保存到指定目录中的Excel文件
final_df = pd.DataFrame(new_data)
save_path = f"{folder_path}/整理数据.xlsx"
final_df.to_excel(save_path, index=False)
print(f"数据已保存到:{save_path}")
此代码的关键点:
1. 使用 `split('\n')` 对含换行符的单元格进行拆分。
2. 如果发现有换行符,则复制该行,并将换行前后的内容分别放入8, 9, 10列的新行中。
3. 每行处理完毕后,结果存入 `new_data` 列表,并最终创建新的 DataFrame 保存到Excel。
请确保安装了 `pandas` 和 `python-docx` 库以支持脚本运行。注意:列索引是从0开始的,所以第8列索引为7,第9列为8,依此类推。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |