python打开文件切片_Python读取word文档内容 - 码夫破石

1,利用python读取纯文字的word文档,读取段落和段落里的文字。

先读取段落,代码如下:

 1''' 2    #利用python读取word文档,先读取段落
 3''' 4#导入所需库 5from docx import Document
 6 7#打开word文档 8 document = Document("D:/路径/长恨歌.docx")
 910#获取所有段落11 all_paragraphs = document.paragraphs
12#打印看看all_paragraphs是什么东西13print(type(all_paragraphs)) #<class 'list'>,打印后发现是列表14#是列表就开始循环读取15for paragraph in all_paragraphs:
16#打印每一个段落的文字17print()

效果:

5667e2491a55481f65500859e5650470.png

再读取段落里的内容,代码如下:

 1''' 2    #利用python读取word文档
 3''' 4#导入所需库 5from docx import Document
 6 7#打开word文档 8 document = Document("D:/路径/长恨歌.docx")
 910#获取所有段落11 all_paragraphs = document.paragraphs
12#打印看看all_paragraphs是什么东西13print(type(all_paragraphs)) #<class 'list'>,打印后发现是列表14#是列表就开始循环读取15for paragraph in all_paragraphs:
16#打印每一个段落的文字17#print()18#循环读取每个段落里的run内容19for run in paragraph.runs:
20print() #打印run内容

效果如下:

7b8199b7476a292c942aef895d572ff6.png

其实都准确的获取了文字内容,但是paragraph是保留了word文档里的换行符,而run是没有保留的。

2,利用python读取纯表格文档,那要读取的文字都是存储在单元格里,需要读取单元格里的内容:

 1''' 2    #利用python读取word文档,表格文档
 3''' 4#导入所需库 5from docx import Document
 6 7#打开文件 8 document = Document("D:/路径/长恨歌-表格.docx")
 9#获取文档所有表格10 all_tables = document.tables
1112#打印all_tables类型13print(type(all_tables)) #得到<class 'list'>,即列表14#开始循环读取表格列表15for table in all_tables:
16#循环读取表格的每一行17for row in table.rows:
18#print(row)19#循环读取表格的每一个单元格20for cell in row.cells:
21#打印单元格里的内容22print() #打印

3,利用python读取word文档,文档是表格加文字组合而成的。这个就设计word文档格式问题了。将要处理的word文档后缀名改为zip,发现也可以打开,里面有几个文件如图:

ed0a872e4126a275ae5a0266dc61224c.png

点开word目录,发现有个,这就是我们要处理的文件。

2e8b558d568470fedfd07cd2e89718f2.png

代码开始:

 1''' 2    #利用python读取word文档,表格文档
 3''' 4#导入所需库 5import zipfile #解压文件库 6#先将要处理的word文档用zipfile进行压缩 7 word = ('D:/路径/长恨歌-文字+表格.docx')
 8 9#找到要处理的xml文件并以utf-8的格式读取10 xml = ('word/').decode('utf-8')
11#打印看看12#print(type(xml)) #字符串13#print(xml) #打印整个字符串14#接下来分割字符串并存储到列表中15 xml_list = ('<w:t>') #以字符串<w:t>进行分割字符串16#打印看是否符合预期17#print(type(xml_list)) #是列表18#print(xml_list) #列表内容1920#开始切片,找标签</w:t>21 text_list = [] #新建空list用以存储切出来的数据22#开始循环读取列表xml_list23for i in xml_list:
24#条件查找25if ('</w:t>') + 1: #切片查找是如果没找到是会返回-1,我们+1让他返回0,再运行else分支26         text_list.append(i[:('</w:t>')]) #如果不是返回0就把找到的依次追加到text_list末尾27else:
28pass29#print(text_list)30#再将得到的列表拆分为字符串31 text = ''.join(text_list) #以空字符串为间隔,将列表拆分为字符串32print(text)

第三个表格加文字的取出文字有点绕,多处理几遍就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值