用户登录
用户注册

分享至

python如何读取word文档内容 python如何读取word文件

  • 作者: 稀世珍品文玩天下
  • 来源: 51数据库
  • 2020-04-16

>>>defPrintAllParagraphs(doc):

count=doc.Paragraphs.Count

foriinrange(count-1,-1,-1):

pr=doc.Paragraphs[i].Range

printpr.Text

>>>app=my.Office.Word.GetInstance()

>>>doc=app.Documents[0]

>>>PrintAllParagraphs(doc)

1.什么是域

域应用基础

>>>

@staticmethod

defGetInstance():

u'''获取Word应用程序的Application对象'''

importwin32com.client

returnwin32com.client.Dispatch('Word.Application')

  1. my.Office.Word.GetInstance的方法实现如上,是一个使用win32com操纵Word Com的接口的封装

  2. 所有Paragraph即段落对象,都是通过Paragraph.Range.Text来访问它的文字的

python读取word文档内容

import fnmatch, os, sys, win32com.client

readpath=r'D:\123'

wordapp = win32com.client.gencache.EnsureDispatch("Word.Application")

try:

for path, dirs, files in os.walk(readpath):

for filename in files:

if not fnmatch.fnmatch(filename, '*.docx'):continue

doc = os.path.abspath(os.path.join(path,filename))

print 'processing %s...' % doc

wordapp.Documents.Open(doc)

docastext = doc[:-4] + 'txt'

wordapp.ActiveDocument.SaveAs(docastext,FileFormat=win32com.client.constants.wdFormatText)

wordapp.ActiveDocument.Close()

finally:

wordapp.Quit()

print 'end'

f=open(r'd:\123\test.txt','r')

for line in f.readlines():

print line.decode('gbk')

f.close()

能否直接读取word文档内容吗?

我在其他地方也看到了先将word保存为txt再读取,为何要这样操作那?

因为word并不是纯文本(不存在一行一行的概念),尽管你可能只输入了文本,但不能认为它就是文本

python如何读取word文档内容 python如何读取word文件

如何用python读取word

使用Python的内部方法open()读取文本文件

try:

f=open('/file','r')

print(f.read())

finally:

iff:

f.close()

如果读取word文档推荐使用第三方插件,python-docx 可以在官网上下载

使用方式

#-*-coding:cp936-*-

importdocx

document=docx.Document(文件路径)

docText='\n\n'.join([

paragraph.text.encode('utf-8')forparagraphindocument.paragraphs

])

printdocText

如何在 Linux 上使用 Python 读取 word 文件信息

必须说明:不同于Illustrator、InDesign、CorelDRAW、OpenOffice DRAW、Incscape等工具,Word是流动分页的,文件内容本身并不存储分页结果。具体分页时断在哪里、最后分出多少页,都需要现场渲染所有的图文内容之后才能确定。

(简而言之就是:Word文件中仅包含了一行一行的文本,与页面设置中指定的页面尺寸。Word每次打开文件时都会一行一行“摆放”文本数据,发现一页装不下了自动新开一页。当然真正的Word渲染引擎肯定有更复杂的行为。)

从.doc/.docx文件中直接读出页面数量,这本身就是个伪命题。所以千万别在“直接读取页面数量”这个方向上寻求方案——软件开发的技法不好可以改正,但路线错了必死无疑!

你需要调动一套能够真的把Word文件的内容渲染出来的工具(支持二次开发的)。只有把Word文件的所有内容渲染成为可以观看的图形,才能准确得知页面的总数。在Linux上很可能LibreOffice可以吧。而在Windows上就当然是用Word本身了。

注意Word的分页结论是没有保证的。缺少字体、字形不同、软件环境不同等各种原因,都会造成不同电脑上打开同一个Word文件的页数不一致。这一点对服务器也没有例外。得到了页数也只能参考使用,而不要100%信赖。

如何在 Linux 上使用 Python 读取 word 文件信息

必须说明:不同于Illustrator、InDesign、CorelDRAW、OpenOffice DRAW、Incscape等工具,Word是流动分页的,文件内容本身并不存储分页结果。具体分页时断在哪里、最后分出多少页,都需要现场渲染所有的图文内容之后才能确定。

(简而言之就是:Word文件中仅包含了一行一行的文本,与页面设置中指定的页面尺寸。Word每次打开文件时都会一行一行“摆放”文本数据,发现一页装不下了自动新开一页。当然真正的Word渲染引擎肯定有更复杂的行为。)

从.doc/.docx文件中直接读出页面数量,这本身就是个伪命题。所以千万别在“直接读取页面数量”这个方向上寻求方案——软件开发的技法不好可以改正,但路线错了必死无疑!

你需要调动一套能够真的把Word文件的内容渲染出来的工具(支持二次开发的)。只有把Word文件的所有内容渲染成为可以观看的图形,才能准确得知页面的总数。在Linux上很可能LibreOffice可以吧。而在Windows上就当然是用Word本身了。

注意Word的分页结论是没有保证的。缺少字体、字形不同、软件环境不同等各种原因,都会造成不同电脑上打开同一个Word文件的页数不一致。这一点对服务器也没有例外。得到了页数也只能参考使用,而不要100%信赖。

python如何获取word文件中某个关键字之后的表格

最好是全部都读取到程序中,在程序中进行判断。

本文实例讲述了Python实现批量读取word中表格信息的方法。分享给大家供大家参考。具体如下:

单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来

#coding:utf-8

import os

import win32com

from win32com.client import Dispatch, constants

from docx import Document

def parse_doc(f):

"""读取doc,返回姓名和行业

"""

doc = w.Documents.Open( FileName = f )

t = doc.Tables[0] # 根据文件中的图表选择信息

name = t.Rows[0].Cells[1].Range.Text

situation = t.Rows[0].Cells[5].Range.Text

people = t.Rows[1].Cells[1].Range.Text

title = t.Rows[1].Cells[3].Range.Text

print name, situation, people,title

doc.Close()

def parse_docx(f):

"""读取docx,返回姓名和行业

"""

d = Document(f)

t = d.tables[0]

name = t.cell(0,1).text

situation = t.cell(0,8).text

people = t.cell(1,2).text

title = t.cell(1,8).text

print name, situation, people,title

if __name__ == "__main__":

w = win32com.client.Dispatch('Word.Application')

# 遍历文件

PATH = "H:\work\\aaa" # windows文件路径

doc_files = os.listdir(PATH)

for doc in doc_files:

if os.path.splitext(doc)[1] == '.docx':

try:

parse_docx(PATH+'\\'+doc)

except Exception as e:

print e

elif os.path.splitext(doc)[1] == '.doc':

try:

parse_doc(PATH+'\\'+doc)

except Exception as e:

print e

希望本文所述对大家的Python程序设计有所帮助。

如何在 Linux 上使用 Python 读取 word 文件信息

请注意,所有的程序在它们第一行都是#!/usr/bin/env/python,也就是说,我们想要Python的解释器来执行这些脚本。因此,如果你想你的脚本具有执行性,请使用chmod +x your-script.py, 那么你就可以使用./your-script.py来执行它了(在本文中你将会看到这种方式)

探索platform模块

platform模块在标准库中,它有很多运行我们获得众多系统信息的函数。让我们运行Python解释器来探索它们中的一些函数,那就从platform.uname()函数开始吧:

>>> import platform

>>> platform.uname()

('Linux', 'fedora.echorand', '3.7.4-204.fc18.x86_64', '#1 SMP Wed Jan 23 16:44:29 UTC 2013', 'x86_64')

如果你已知道linux上的uname命令,那么你就会认出来这个函数就是这个命令的一个接口。在Python 2上,它会返回一个包含系统类型(或者内核版本),主机名,版本,发布版本,机器的硬件以及处理器信息元组(tuple)。你可以使用下标访问个别属性,像这样:

>>> platform.uname()[0]

'Linux'

在Python 3上,这个函数返回的是一个命名元组:

>>> platform.uname()

uname_result(system='Linux', node='fedora.echorand',

release='3.7.4-204.fc18.x86_64', version='#1 SMP Wed Jan 23 16:44:29

UTC 2013', machine='x86_64', processor='x86_64')

因为返回结果是一个命名元组,这就可以简单地通过名字来指定特定的属性,而不是必须记住下标,像这样:

>>> platform.uname().system

'Linux'

platform模块还有一些上面属性的直接接口,像这样:

>>> platform.system()

'Linux'

>>> platform.release()

'3.7.4-204.fc18.x86_64'

如何在 Linux 上使用 Python 读取 word 文件信息

第一步:获取doc文件的xml组成文件

import zipfiledef get_word_xml(docx_filename):

with open(docx_filename) as f:

zip = zipfile.ZipFile(f)

xml_content = zip.read('word/document.xml')

return xml_content

第二步:解析xml为树形数据结构

from lxml import etreedef get_xml_tree(xml_string):

return etree.fromstring(xml_string)

第三步:读取word内容:

def _itertext(self, my_etree):

"""Iterator to go through xml tree's text nodes"""

for node in my_etree.iter(tag=etree.Element):

if self._check_element_is(node, 't'):

yield (node, node.text)def _check_element_is(self, element, type_char):

word_schema = '99999'

return element.tag == '{%s}%s' % (word_schema,type_char)

转载请注明出处51数据库 » python如何读取word文档内容 python如何读取word文件

软件
前端设计
程序设计
Java相关