perfaceNext 发表于 2022-8-21 23:50

python读取word的诡异问题

用的python-docx这个库,doc文件转docx读取,99%的情况下很正常,就是某些未知的情况下,某个文件的中间一小段文字“abcdef”,python会读出变成“abc”,也可能是空白,实际doc文件里显示是很正常的“abcdef”,其他文件的同样的位置读取也是正常的。对那个出问题的doc文件,随便找个文字删掉然后再输入同样的文字,保存之后就读取正常了。我想做了个文件文本比较对比看看,对比结果也很意外,原以为就“abcdef”这个地方会出现不一致,实际是完全一致。不一致的地方,自己完全没有修改过,比如原始文件的“ÉE”,修改保存后就变成了“蒃”,虽然doc里面显示还是“ÉE”。实在无法理解,文件本身是公司内部文件,没法上传了,想请教一下解决思路,谢谢了。PS对比软件是Beyond Compare 4,转换用的是默认的UTF-16LE BOM

litel 发表于 2022-8-22 00:51

vba调用office转docx再读?或者调用openoffice转docx

归蝶 发表于 2022-8-22 01:57

把docx文件解压,在里面的xml里搜索你这几个字符看是什么样子的

maritimus 发表于 2022-8-22 02:06

先转docx比较好,doc都是二进制格式,找问题太难了。python应该有办法调用word的COM借口转docx

lyflyflxf 发表于 2022-8-22 06:37

python-docx is a Python library for creating and updating Microsoft Word (.docx) files.
强烈建议只用它处理DOCX文件,而不处理DOC文件

糊状物 发表于 2022-8-22 07:10

Python众多库读doc都是用antiword,或者直接调用word另存为其他格式

—— 来自 Xiaomi MI 8, Android 10上的 S1Next-鹅版 v2.5.4

perfaceNext 发表于 2022-8-22 07:24

lyflyflxf 发表于 2022-8-22 06:37
强烈建议只用它处理DOCX文件,而不处理DOC文件

没办法原生的报告都是doc的,不可能改的,只能让转成docx后再搞。

董卓 发表于 2022-8-22 07:50

3楼+1

lyflyflxf 发表于 2022-8-22 07:58

perfaceNext 发表于 2022-8-22 07:24
没办法原生的报告都是doc的,不可能改的,只能让转成docx后再搞。

那就试着换几种转换为DOCX的方法,看哪种比较稳定吧

sunny_am 发表于 2022-8-22 08:04

非法字符?复制进vscode把显示隐藏字符打开看看

perfaceNext 发表于 2022-8-22 22:36

归蝶 发表于 2022-8-22 01:57
把docx文件解压,在里面的xml里搜索你这几个字符看是什么样子的

这边办法好,虽然我不懂xml,大概是<w:smartTag>的问题,感觉挺麻烦了。
https://github.com/python-openxml/python-docx/issues/825,好像和我的问题差不多
页: [1]
查看完整版本: python读取word的诡异问题