python docx 处理遇到 ValueError: WD_COLOR_INDEX 没有“none”的 XML 映射

问题描述 投票:0回答:1

我用谷歌搜索了这个错误,发现之前没有人遇到过这个 ValueError。您可以从下面的回溯日志中看到该错误是由我的代码行触发的

bg_color = run.font.highlight_color
我猜
python-docx
库遇到了一些它无法处理的奇怪情况?也许是 docx 中包含的一些
WD_COLOR_INDEX
值是 python-docx 无法识别的。

如果 python-docx 遇到并放置在没有 font.hightlight_color 的地方,它应该只返回 None 给我,而不是尝试从某些 xml 映射中获取翻译值。

我该如何解决这个问题?

Traceback (most recent call last):
  File "XXX.py", line 377, in <module>
    main()
  ...
    bg_color = run.font.highlight_color
  File "/home/xxx/.local/lib/python3.8/site-packages/docx/text/font.py", line 139, in highlight_color
    return rPr.highlight_val
  File "/home/xxx/.local/lib/python3.8/site-packages/docx/oxml/text/font.py", line 183, in highlight_val
    return highlight.val
  File "/home/xxx/.local/lib/python3.8/site-packages/docx/oxml/xmlchemy.py", line 254, in get_attr_value
    return self._simple_type.from_xml(attr_str_value)
  File "/home/xxx/.local/lib/python3.8/site-packages/docx/enum/base.py", line 64, in from_xml
    raise ValueError(f"{cls.__name__} has no XML mapping for '{xml_value}'")
ValueError: WD_COLOR_INDEX has no XML mapping for 'none'
python python-3.x docx python-docx
1个回答
0
投票

我尝试找出原因。因此,我将目标 docx 减少为仅会触发错误的关键内容。然后我将 docx 重命名为 xxx.zip 并解压缩。我查看

document.xml
文件并看到一些如下代码:
<w:highlight w:val="none"/><w:shd w:val="clear" w:fill="F7FAFC"/>

当时我想我已经找到了ValueError问题的原因了。 python-docx 库不期望 Word 文件具有(字体)hightlight 属性,其值为

"none"

由于这是一个库错误,而我的目的是检测突出显示的运行,因此我只是将代码包装在 try- except 块周围。

© www.soinside.com 2019 - 2024. All rights reserved.