python-docx 从下拉列表中获取信息(在表中)

2024-03-22

我有一个包含多个表的 docx 文件,我想从列表中的表中获取所有信息(该列表称为“alletabellen”)。 通过下面的脚本,我收到了表格中几乎所有的信息,除了下拉列表中的某些变量的值(在某些表格单元格中)。 这些单元格的值在我的列表中保持为空(例如变量“Number:”中的值“1.2”,请参阅:https://s30.postimg.org/477j8z6ch/table.png https://s30.postimg.org/477j8z6ch/table.png我的列表中没有得到该值)。

是否也可以从这些变量中获取信息?

import docx

bestand = docx.Document('somefile.docx')
tabellen = bestand.tables

alletabellen = []     
for i, tabel in enumerate(tabellen):
    for row in tabellen[i].rows:
        for cell in row.cells:
            for paragraph in cell.paragraphs:
                alletabellen.append(paragraph.text)

Update

我找到了一个解决方案(感谢scanny为我指明了正确的方向)。 我没有意识到 docx 文件实际上是一个带有 xml 文件的压缩文件,其中包含所有文本。我使用模块 zipfile 提取 docx,使用模块 bs4 查找所有下拉列表标签(“ddList”)并将数据放入列表中。在我的文档中有 12 个下拉列表,我只需要其中的 3 个(其中一个是屏幕截图中的“Number:”,这是文档中的第一个下拉列表)。

import docx
import zipfile
from bs4 import BeautifulSoup

doc = 'somefile.docx'

bestand = docx.Document(doc)
tabellen = bestand.tables

#get data from all the "normal" fields

alletabellen = []     
for i, tabel in enumerate(tabellen):
    for row in tabellen[i].rows:
        for cell in row.cells:
            for paragraph in cell.paragraphs:
                alletabellen.append(paragraph.text)

#get data from all the dropdown lists

document = zipfile.ZipFile(doc)
xml_data = document.read('word/document.xml')
document.close()

soup = BeautifulSoup(xml_data, 'xml')
gegevens = soup.findAll('ddList')     #search dropdownlists (n = 12)

dropdownlist = []
dropdownlistdata = []

for i in gegevens:
    dropdownlist.append(i.find('result'))

#convert to string for if statements
number = str(dropdownlist[0])
job = str(dropdownlist[1])
vehicle = str(dropdownlist[7])

if number == '<w:result w:val="1"/>' :
    dropdownlistdata.append('0,3')
elif number == '<w:result w:val="2"/>' :
    dropdownlistdata.append('1,2')
elif number == '<w:result w:val="3"/>' :
    dropdownlistdata.append('onbekend')
else:
    dropdownlistdata.append('geen')

if job  == '<w:result w:val="1"/>' :
    dropdownlistdata.append('nee')
else:
    dropdownlistdata.append('ja')

if vehicle == '<w:result w:val="1"/>' :
    dropdownlistdata.append('nee')
else:
    dropdownlistdata.append('ja')

#show data
print alletabellen
print dropdownlistdata

“1.2”没有从.text调用很可能将其包装在某种“容器”XML 中,使其表现得像表单字段。

第一步是检查 XML,以便您了解遇到的问题。然后您将编写一些代码来查找隐藏的内容。

opc-diag可以帮助您检查 XML:http://opc-diag.readthedocs.io/en/latest/index.html http://opc-diag.readthedocs.io/en/latest/index.html

你会想要寻找document.xml part.

如果您将文档精简到能够表现出这种行为的最小值,则可以更轻松地找到需要处理的部分。

如果您可以发布该表的该部分的 XML,我可以进一步指导您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python-docx 从下拉列表中获取信息(在表中) 的相关文章

  • 如何在 PyCharm 中设置运行配置的默认工作目录

    当我想运行众多 python 脚本之一时 我点击运行 这会创建一个新的运行配置 该配置的工作目录是 python 脚本文件所在的文件夹 相反 它应该从项目范围的固定文件夹运行 我想以某种方式进行设置 但我真的不明白为什么 这有点奇怪 因为我
  • 最近的 AWS 区域的客户端 IP 地址

    Question 我想从客户端设备将一些数据上传到 AWS 但我想上传到最近的 AWS 区域的 S3 存储桶 同样 我希望能够从最近的区域下载 当然 我会在每个区域设置一个存储桶 我可以使用一个系统 它可以获取客户端的 IP 地址 然后确定
  • 删除 python vaex 中的重复行

    我正在使用 python vaex 但我不知道如何删除数据框中的重复行 例如 在 pandas 中存在以下方法drop duplicates vaex中有没有类似的功能 似乎还没有 但我们应该在某个时候期待这个功能 其间 有vaex创始人的
  • 使用 python 中的 java 库

    我有一个 python 应用程序和 java 应用程序 python 应用程序为 java 应用程序生成输入并在命令行上调用它 我确信一定有一个更优雅的解决方案 就像使用 JNI 从 Java 调用 C 代码一样 有什么指点吗 仅供参考 我
  • 计时器显示负的已用时间

    我正在使用一个非常简单的代码来计算每个循环的时间for陈述 它看起来像这样 import time for item in list of files Start timing this loop start time clock Do a
  • 从两个字典创建一个新列表

    这是一个关于Python的问题 我有以下字典列表 listA t 1 tid 2 gtm 3 c1 4 id 111 t 3 tid 4 gtm 3 c1 4 c2 5 id 222 t 1 tid 2 gtm 3 c1 4 c2 5 id
  • 包含可变数据的正则表达式 - ply.lex

    我正在使用 python 模块ply lex编写一个词法分析器 我用正则表达式指定了一些标记 但现在我卡住了 我有一个list of Keywords谁应该是token data是一个包含大约 1000 个关键字的列表 这些关键字都应该被识
  • BeautifulSoup 抓取街道地址

    我正在使用最底部的代码来获取weblink 以及清真寺名称 不过我也想得到面值 and 街道地址 请帮助我被困住了 目前我得到以下信息 Weblink div class subtitleLink a href http www salat
  • 使用 string.whitespace 删除 Python 中的空格

    Python 的 string whitespace 很棒 gt gt gt string whitespace t n x0b x0c r 如何在不手动输入 t n 等正则表达式的情况下将其与字符串一起使用 例如 它应该能够转动 请不要伤
  • 散景服务器获取鼠标位置

    我正在开发一个带有散景 0 12 2 的交互式应用程序 它根据特定的交互更新绘图 现在 我使用滑块来更改图中字形的位置 但实际上我想访问鼠标在特定图中的位置 数据集是一个多维矩阵 张量 密集数据 每个图在特定位置显示一个维度 如果我更改一个
  • 为什么 PySpark 中的 agg() 一次只能汇总 DataFrame 的一列? [复制]

    这个问题在这里已经有答案了 对于下面的数据框 df spark createDataFrame data Alice 4 300 Bob 7 677 schema name High 当我尝试找到最小值和最大值时 我只得到输出中的最小值 d
  • Python Pandas groupby、排名,然后根据自定义排名分配值

    问题设置 大熊猫数据框 df pd DataFrame Group A A A A A A A A A Subgroup Group 1 Group 1 Group 1 Group 1 Group 1 Group 1 Group 2 Gro
  • 为线条指定颜色

    我试图在 matplotlib 中绘制可变数量的行 其中 X Y 数据和颜色存储在 numpy 数组中 如下所示 有没有办法将颜色数组传递到绘图函数中 这样我就不必采取额外的步骤来单独为每条线分配颜色 我是否应该将 RGB 颜色数组转换为另
  • 为什么 1.__add__(2) 不起作用? [复制]

    这个问题已经存在了 可能的重复 访问 python int 文字方法 https stackoverflow com questions 10955703 accessing a python int literals methods 在P
  • Python Pandas:将参数传递给 agg() 中的函数

    我试图通过使用不同类型的函数和参数值来减少 pandas 数据框中的数据 但是 我无法更改聚合函数中的默认参数 这是一个例子 gt gt gt df pd DataFrame x 1 np nan 2 1 y a a b b gt gt g
  • Django:通过外键将两个表连接到第三个表?

    我有三个型号 class A Model class B Model id IntegerField a ForeignKey A class C Model id IntegerField a ForeignKey A 我想要得到 B i
  • 如何更改 PyGame 中声音或音乐的音量?

    如何更改 PyGame 中的音量 例如通过设置更改音量 我制作了 UI 元素 只需要知道如何更改音量即可 我知道我说不清楚 但你可以理解我 请帮忙 更改音量取决于您是否正在播放pygame mixer Sound https www pyg
  • 如何从 Python 脚本捕获 Curl 的输出

    我想使用curl查找有关网页的信息 但在Python中 到目前为止我有这个 os system curl head www google com 如果我运行它 它会打印出 HTTP 1 1 200 OK Date Sun 15 Apr 20
  • 如何在Python中从stdin中逐行读取

    每个人都知道如何在 C 中计算 STDIN 中的字符 但是 当我尝试在 python3 中执行此操作时 我发现这是一个难题 计数器 py import sys chrCounter 0 for line in sys stdin readl
  • Pandas:根据是否为 ​​NaN 来移动列

    我有一个像这样的数据框 phone number 1 clean phone number 2 clean phone number 3 clean NaN NaN 8546987 8316589 8751369 NaN 4569874 N

随机推荐

  • 不同平台上的平台默认字符集?

    一些遗留代码依赖于平台的默认字符集进行翻译 对于 西方世界 中的 Windows 和 Linux 安装 我知道这意味着什么 但考虑到俄罗斯或亚洲平台 我完全不确定他们平台的默认字符集是什么 只是 UTF 16 因此我想知道执行以下代码行时会
  • Array.prototype.includes函数如何比较对象

    在 ECMA 规范中 我们读到Array prototype includes https tc39 es ecma262 sec array prototype includes uses 相同值零 https tc39 es ecma2
  • 为什么错误:元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:数字

    我正在运行这个程序来显示 SVG 图像 import React Component from react import View from react native import Expo from assets check mark s
  • 不幸的是应用程序已停止 - android.os.NetworkOnMainThreadException [重复]

    这个问题在这里已经有答案了 我正在编写一个应用程序 其中允许用户输入其详细信息 但每当用户单击 提交 按钮时 我都会收到错误消息 错误消息如下 不幸的是应用程序已停止 android os NetworkOnMainThreadExcept
  • 通过键盘触发 JQuery 模态框的 Ctrl+P 打印

    我有一个在 JQuery 模态框中弹出的文档 该文档末尾有一个打印按钮 只需打印弹出框中的文档 我正在寻找一种解决方案 可以通过按 Ctrl P 打印弹出框 现在 Ctrl p 打印所有页面 包括背景 我只是希望找到一个解决方案 帮助我仅在
  • 如何使用 MSTest 从命令行运行 SpecFlow 场景?

    我有 Visual Studio 2010 并且我们有两个使用的 VS 解决方案 第一个是 Web 应用程序 第二个是严格用于 SpecFlow 测试 同时运行两个 Visual Studio 实例来运行 SpecFlow 功能会占用所有可
  • 从另一个网站获取数据

    我正在使用 PHP 创建一个新网站 我想从另一个有我的个人资料的网站获取数据 其中包含壁纸 徽标等 我想从该网站获取数据并将其显示在我的新网站的内容部分中 请给我一些关于如何在 PHP 中完成此任务的想法 提前致谢 参见例如这卷曲延伸 ht
  • Clojure 中的惯用模式函数

    我正在学习 Clojure 想要一些关于惯用用法的建议 作为小型统计包的一部分 我有一个计算一组数据的众数的函数 背景 众数是一组数据中最常见的值 几乎有十几种已发布的算法来计算它 这里使用的算法来自 Bernard Rosner 的 生物
  • 鼠标移动时滚动窗口

    大家好我的意思是 当鼠标移向窗口边缘 x 或 y 或两者 时 我希望页面滚动 当鼠标停止移动时 我希望页面停止滚动 有很多关于如何基于使用 onClick 事件或窗口边缘的滚动区域进行滚动的示例 但基于鼠标光标的移动的示例并不多 任何帮助将
  • 解析多部分表单数据

    我正在尝试组合一个 HTML POST 表单 该表单具有两个字段 文件上传和文本字段 由于表单具有用于文件上传的 multipart form data 类型 因此我无法通过正常的 PHP POST 变量获取文本字段 那么如何使用 PHP
  • ASP.NET 中的静态对象浪费内存?

    前几天我只是想知道这个问题 我不太确定 ASPX 如何管理垃圾处理 但据我所知 完成加载 不会删除静态内存值或在页面重新加载后 至少就 C 而言 静态意味着内存分配会跟随您的程序 直到程序本身关闭 ASPX 中也是这样吗 如果我有一个静态值
  • 我们可以在 C# 项目中使用 COM 对象吗?

    我按照教程制作了一个 C COM 对象 http www codeproject com Articles 18939 C Com http www codeproject com Articles 18939 C Com 现在我想在 C
  • VB.NET 中的 UploadString(Post 方法)不起作用

    我正在尝试将简单数据发布到某个站点 在本例中发布到本地服务器上的 php 文件 我的 VB NET 代码 Dim W As New Net WebClient Dim A As String W Encoding System Text E
  • Google 如何确定将页面索引为讨论页面? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在自己建立一个问答网站 我想让这个网站被Google索引为问答网站或论坛 可以在使用Google中的 讨论 时检索到 根据我的个人经验 当我想获得
  • pymongo:使用 MongoReplicaSetClient 的优点?

    看来两者Mongo客户端 http api mongodb org python current api pymongo mongo client html and MongoReplicaSet客户端 http api mongodb o
  • IOS:停止 NSTimer [重复]

    这个问题在这里已经有答案了 可能的重复 NSTimer 不会停止 https stackoverflow com questions 1031554 nstimer doesnt stop 我有这个代码 NSTimer scheduledT
  • TensorFlow中矩阵乘法函数的使用

    我对这个函数的使用有点困惑tf matmul 在 TensorFlow 中 不过 我的问题可能更多是关于深度学习的理论 假设你有一个输入 X 和权重矩阵 W 假设零偏差 我想将 WX 计算为输出 可以通过以下方式完成tf matmul W
  • 找不到适用于 jdbc:mysql/localhost:3306/world 的驱动程序

    我是这个领域编程的新手 我在驱动程序方面遇到了一些问题 有点 当我直接与客户端一起使用时 MySql 工作正常 问题是我无法将 tomcat 与 MySql 连接 我将所有驱动程序放在 WEB INF lib 中 使用mysql 5 7 t
  • Word 文档的 XML/XSD 验证

    我有一份将不断更新的文档 由文本和表格组成 这些表有两行 第一行包含数字范围 第二行包含单个数字 我想检查第 2 行中的数字是否在第 1 行给出的范围内 我想使用 XML 和 XSD 来执行此操作 我最初的想法是从单词 doc 创建一个 X
  • python-docx 从下拉列表中获取信息(在表中)

    我有一个包含多个表的 docx 文件 我想从列表中的表中获取所有信息 该列表称为 alletabellen 通过下面的脚本 我收到了表格中几乎所有的信息 除了下拉列表中的某些变量的值 在某些表格单元格中 这些单元格的值在我的列表中保持为空