python - 将包含混合字体的word文档转换为unicode
问题描述
我有一个包含不同字体和不同语言的 word 文档。一个例子是英文文本和古希腊语的相应翻译。对于古希腊语部分,使用了 TrueType 字体(https://fonts2u.com/greek-regular.font)。现在这种方法非常不适合共享这些文件,我想将古希腊部分转换为相应的 unicode 字符。
我尝试了 python 包 python-docx 来导入文件。虽然成功导入和查看文件内容,但我找不到仅选择古希腊字符并将它们转换为相应的 unicode 字符的方法。
我正在考虑使用 TrueType 字体字符映射并用相应的 unicode 字符查找和替换这些字符。但是查看内容我无法仅选择古希腊字符。
问:有没有办法使用 VBA、python 或导出不同编码的文件来将古希腊字符“翻译”成对应的 unicode 字符?
解决方案
哇,听起来很尴尬,复合破碎!
鉴于字体使用其自己的非标准字符编码定义,您可能更容易使用 XML 解析器直接处理文件。我这样做主要是因为这是我最容易选择文本的相关错误编码部分的方式。
就像是:
- 打开文件(
ElementTree
在 Python 中)。请注意,DOCX 文件实际上是一个 ZIP 文件,其中包含一个名为的文件word/document.xml
和其他相关的图像/杂项(视情况而定) - 使用 xpath 选择器获取所有使用希腊字体的文本实例
- 使用您的重新映射代码从损坏的希腊编码转移到使用真正的 Unicode 字符
- 保存文件
您想切换到在其标准 unicode 代码点中使用希腊字符的字体,您可以在原始 XML 中执行此操作,或者只是在 Word 中重新打开文件并在任何地方设置字体
推荐阅读
- ssh - GCP Compute Engine // 连接被拒绝错误:(gcloud.compute.ssh)[/usr/bin/ssh] exited with return code [255]
- r - 没有测试的单元测试
- java - 阵列旋转问题 - 无法获得所需的输出
- spark-streaming - 使用 HAIL 解析 .bgen 文件,而不在单个节点上加载数据
- python - django-heroku 没有安装
- chart.js - 如何更改 Charts.js 中水平条的起点
- java - 无法使用具有文本逗号 csv 的值拆分字符串
- excel - Excel 文件缺少对 Microsoft Windows Common Controls-2 的引用
- python - pydrive.auth.RefreshError:访问令牌刷新失败:invalid_grant:令牌已过期或撤销
- c - 使用 CGO 将 Go 嵌套的结构数组转换为 C?