导航:首页 > 编程语言 > pythondocx中文

pythondocx中文

发布时间:2023-09-20 22:59:35

Ⅰ 利用python将docx文件转为txt

背景:工作中需要将文件夹下的若干word文.docx转换为对应txt文本格式

因此需要将docx中文本读取出来,然后保存为txt格式即可

需要的python模厅伏块为 python-docx : https://python-docx.readthedocs.io/en/latest/index.html, 导入模块时候导入docx

(只能读取.docx文件,不能读取.doc文件)

注意,在PyPi里还有一个叫docx的库,已经停止更新,不建议使用)

http://www.cnblogs.com/geek-arking/p/9300617.html

上面的方法只能读取docx文件,如果读取doc会报错

结果报错:docx.opc.exceptions.PackageNotFoundError: Package not found。还是无法识别doc

“改变拓展名并没有改变其编码方式,因此无法读取文本内容,需将doc文件用word另存为docx后再用python-docx读取其内容”

对于要转换的doc文件,网上的资料都是使用win32,需要安装 pypiwin32

https://www.cnblogs.com/AlgorithmDot/p/3386918.html

通过上面的方法,有时可以尘陆直接将doc转换为txt文件,有时候会报错。

这里我们可以考虑将doc文件直接转换为docx然后再通过上面的方法读取为txt,如果手动将doc修改为txt或者docx,打开文件会显示乱码,但是可以用其提供的SaveAs方法将.doc文档利用手动的方式“另存为”.docx文档,就能够成功打开转化后的.docx文档,

doc.SaveAs(tmp +'.docx', 16)

其中16的含义如下:

利用win32com接口直接调用office API,好处是简单、兼容性好,只要office能处理的,python都可以处理,处理出来的结果和office word里面“另存为”一扮兄携致。

下面是office 2007支持的全部文件格式对应表:

wdFormatDocument = 0 

wdFormatDocument97 = 0 

wdFormatDocumentDefault = 16 

wdFormatDOSText = 4 

wdFormatDOSTextLineBreaks = 5 

wdFormatEncodedText = 7 

wdFormatFilteredHTML = 10 

wdFormatFlatXML = 19 

wdFormatFlatXMLMacroEnabled = 20 

wdFormatFlatXMLTemplate = 21 

= 22 

wdFormatHTML = 8 

wdFormatPDF = 17 

wdFormatRTF = 6 

wdFormatTemplate = 1 

wdFormatTemplate97 = 1 

wdFormatText = 2 

wdFormatTextLineBreaks = 3 

wdFormatUnicodeText = 7 

wdFormatWebArchive = 9 

wdFormatXML = 11 

wdFormatXMLDocument = 12 

= 13 

wdFormatXMLTemplate = 14 

= 15 

wdFormatXPS = 18

照着字面意思应该能对应到相应的文件格式。

1、新建或打开文件。这个比较简单用docx的Document类,若指定路径则是打开文档;若没有指定路径则是新建文档

2、保存文件。有打开,就有保存。用Document类的save方法,其中参数是保存的文件路径,或者要保存的文件流。一般指定路径即可。

doc.save(path_or_stream)

3、对象集合。python-docx包含了word文档的相关对象集合。

4、插入段落。段落是word最基本的对象之一。

5、新增样式。这个帮助文档里面说得不仔细,而且还是英文的。我手头上的项目用到这个,就自己琢磨出怎么使用,如下。

6、应用字符样式。字符自然是在段落里面的,可以采用下面方法给段落追加文字和设置字符样式。

#插入一个空白段落

p = doc.add_paragraph('')

p.add_run('123', style="Heading 1 Char")

p.add_run('456')

p.add_run('789', style="Heading 2 Char")

#这样一个段落就应用了两个字符样式,中间“456”就没应用样式

printp.text#输出结果是u'123456789' 也还是连续的

7、设置字体。当然可以不用通过设置样式对某些字进行设置,也可以直接设置。

p = doc.add_paragraph('')

r = p.add_run('123')

r.font.bold =True#加粗

r.font.italic =True#倾斜 等等...

8、表格操作。表格也是经常用到的一种对象类型。

Ⅱ python-docx官方文档中文

没有找到。
第一个:
http://python-docx.readthedocs.io/en/latest/api/table.html#id1
和http://python-docx.readthedocs.io/en/latest/api/document.html#id1
有tables返回。
第二个:
用re来解决,\d{4}\D\d{1,2}\D\d{1,2}\D ,这些匹配到的就是日期,替换成你要的。

Ⅲ Python Word文档处理 上篇:python-docx

某天我收到一个需求:希望能够用python对word文档进行一些处理,比如更换一些文字以及添加批注。

简单搜索后,我发现 python-docx 是一个处理docx文档的常用python库,因此我打算用它来进行进一步开发。

官方文档 提供了一个简单的示例

python-docx 将文档抽象为document对象、paragraph对象以及run对象,提供了围绕这些对象进行简单处理的API

然而在文档中并没有出现关于批注操作的部分,我在搜寻 一些文章 后发现了在某个 issue 中提及了添加批注相关信息,然而还是没有得到具体的解决办法

docx文档底层是由XML文件组成的

我们可以将一个 xx.docx 文件的后缀名改为 .rar 然后将其手动解压,可以得到下面这些文件

在诸多文件当中主要用到的是 document.xml 文件,这里保存了文档的内容

打开一份 document.xml 文件,抛开header、footer、table以及其他特殊项,去掉样式等修饰项,一份朴素的docx文档主要可以分为三个部分:paragraph、run、text

paragraph即段落,就是我们在word当中看到的一段。text即文本,就是真实的内容。run比较抽象,我们可以将其理解为片段,即语句的切分。

为了更好地理解run是什么,打开一篇word文档定位其中一句话

让我们看看这篇文档解压之后的 document.xml 文件中对应的部分

OK,我们可以看到原本完整的一句话在word中被拆分成了许多个 <w:r> 标签,这就是 run ,word切分 run 的规则很多,有的根据标点符号,有的根据中文分词,句子中如果存在不同样式的字词也会单独切分出来,因此我们很难预估一句话究竟会被分成几个片段。

在issue中搜索comment关键字发现在一个 merge request 上已经给出了添加批注的解决方案,可以通过 paragraph 对象上的 add_comment 方法给一个段落添加批注

但这还是不符合我的需求,我的目标是精准添加到某个词或者短语上

打开 这个贡献者的源码 进行研究

其实就是在P标签内插入comment标签引用,同时添加comment标签到xx文件

同理我们可以在r标签内插入comment标签引用,同时添加comment标签到xx文件,这样就能实现给特定词添加批注的需求了

阅读全文

与pythondocx中文相关的资料

热点内容
dedecmsphp文件修改 浏览:533
贷款解压省内都可以办理吗 浏览:467
思科服务器如何发布www任务 浏览:682
怎么在苹果里面下王者安卓版的 浏览:686
c语言改编程序没保存 浏览:437
msdos编译教程 浏览:978
怎么去文件夹后缀 浏览:445
粉笔app笔试真题在哪里 浏览:108
晋江小说阅读app怎么注册填写验证 浏览:157
安卓手机如何将手机app安装到u盘 浏览:520
指针编译在哪运行 浏览:810
dnf大枪压缩补丁 浏览:355
linux命令env 浏览:914
浙江app遥控锁哪里有 浏览:708
qq别人加密了怎样才能给他解开 浏览:253
程序员离职开店 浏览:770
excel不能对多重区域使用此命令 浏览:969
手机影像算法盘点 浏览:729
反编译为什么不能得到源代码 浏览:926
php最流行的框架 浏览:191