You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取Word表单提取路径并创建目录时遇缩进错误

问题解决:提取Word表单路径并创建目录的错误修复

1. 核心报错修复:缩进错误

原代码的IndentationError是因为函数定义、变量声明及模块导入存在不必要的缩进。Python对代码层级的缩进要求严格,需将这些代码调整到全局层级(无额外缩进)。

2. 文本提取逻辑修正

原循环中每次迭代会覆盖cell_text,最终仅保留最后一个单元格内容。需将所有单元格文本拼接,确保包含目标段落的完整内容。

3. 路径提取与目录创建逻辑优化

提取到的路径是单个字符串,无需循环遍历;同时需处理路径中的转义字符,添加目录存在检查避免创建报错。

修正后的完整代码

import docx
import os

def between(value, a, b):
    # 查找目标字符串的位置
    pos_a = value.find(a)
    if pos_a == -1:
        return ""
    pos_b = value.rfind(b)
    if pos_b == -1:
        return ""
    # 计算提取范围
    adjusted_pos_a = pos_a + len(a)
    if adjusted_pos_a >= pos_b:
        return ""
    # 提取并去除首尾空白(包括换行符)
    return value[adjusted_pos_a:pos_b].strip()

# 读取Word文档
path = 'C:/new/form.docx'
doc = docx.Document(path)
table = doc.tables[1]

# 拼接所有单元格的文本,确保包含目标内容
full_text = ""
for row in table.rows:
    for cell in row.cells:
        full_text += cell.text + "\n"

# 提取目标路径
target_path = between(full_text, "Data Source (Only)", "Working Folders")
print(f"提取到的路径: {target_path}")

# 创建目录
root_path = 'C:/new'
if target_path:
    # 拼接完整的目录路径(提取目标路径的最后一级作为子目录名)
    dir_name = os.path.basename(target_path)
    dir_path = os.path.join(root_path, dir_name)
    # 检查目录是否已存在,不存在则创建
    if not os.path.exists(dir_path):
        os.mkdir(dir_path)
        print(f"目录 {dir_path} 创建成功")
    else:
        print(f"目录 {dir_path} 已存在")
else:
    print("未找到目标路径")

关键修改说明

  • 将import os移至顶部,符合Python导入规范
  • 修正between函数的缩进,调整为全局层级定义
  • 用full_text拼接所有单元格内容,确保匹配跨行的目标文本
  • 提取路径后去除首尾空白,避免换行符或空格干扰
  • 添加目录存在检查,防止os.mkdir因目录已存在报错
  • 优化目录拼接逻辑,从目标路径中提取子目录名进行创建

内容的提问来源于stack exchange,提问作者Elif Y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:46:37