用户登录
用户注册

分享至

python3读取word 如何用python读取word

  • 作者: 晨曦西
  • 来源: 51数据库
  • 2020-04-21

使用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

python3读取word文件到sqlite

大象关进冰箱需要两步走:

  1. 获取word文件内容
  2. 将获取的内容拆分为对应的业务字段并写入sqlite中

首先我这有个文档,里面包含了驾照考试科四试题。

然后新建sqlite表,以下为表结构:

CREATETABLE"myDocAnswer"(

"id"INTEGERPRIMARYKEYAUTOINCREMENTNOTNULL,

"title"TEXT,

"a"TEXT,

"b"TEXT,

"c"TEXT,

"d"TEXT,

"answer"TEXT

);

最后将数据导入sqlite中,以下为完整代码:

importdocx

importsqlite3

'''

读取docx数据

'''

document=docx.Document("question.docx")

data=[]#定义data列表

item={}

#输出每一段的内容

forparamindocument.paragraphs:

#print(param.text)

ifparam.text:

i=param.text[0]

ifi.isdigit():

item['title']=param.text

ifi=='A':

item['a']=param.text[2:]

ifi=='B':

item['b']=param.text[2:]

ifi=='C':

item['c']=param.text[2:]

ifi=='D':

item['d']=param.text[2:]

ifi=='标':

item['answer']=param.text[-1:]

else:

data.append(item)

item={}

'''

写入sqlite

'''

conn=sqlite3.connect("mydocAnswer.db")

c=conn.cursor()

foritemsindata:

c.execute("INSERTINTO`myDocAnswer`(`title`,`a`,`b`,`c`,`d`,`answer`)VALUES('"+items['title']+"','"+items['a']+"','"+items['b']+"','"+items['c']+"','"+items['d']+"','"+items['answer']+"')");

conn.commit()

conn.close()

print('finish')

运行后查看sqlite数据表数据:

python3读取word文件到sqlite

我也遇到过类似问题,直接就把word里的内容复制到一个TXT文件里, 然后再with open它和read文本内容来做分析

复制到文本没问题,问题是我想把内容导入到excel或者sqlite上。不知道咋解决

python如何读取word文件

>>>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来访问它的文字的

如何在 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文档内容

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并不是纯文本(不存在一行一行的概念),尽管你可能只输入了文本,但不能认为它就是文本

转载请注明出处51数据库 » python3读取word 如何用python读取word

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