精华内容
下载资源
问答
  • python读取doc文件
    千次阅读
    2021-01-14 14:59:11

    import os, time, fnmatch

    from docx import Document

    class search:

    def __init__(self, path, search_string, file_filter):

    self.search_path = path

    self.search_string = search_string

    self.file_filter = file_filter

    print ("Search %s in %s..." % (

    self.search_string, self.search_path

    ) )

    print ("_" * 80)

    time_begin = time.time()

    file_count = self.walk()

    print ("_" * 80)

    print ("%s files searched in %0.2fsec." % (

    file_count, (time.time() - time_begin)

    ))

    #遍历所有的文件,记录文件数量

    def walk(self):

    file_count = 0

    for root, dirlist, filelist in os.walk(self.search_path, followlinks=True):

    for filename in filelist:

    for file_filter in self.file_filter:

    if fnmatch.fnmatch(filename, file_filter):

    self.search_file(os.path.join(root, filename))

    file_count += 1

    return file_count

    #遍历文件中的字符串,并且剪切显示出来

    def search_file(self, filepath):

    d = Document(filepath)

    for para in d.paragraphs:

    if self.search_string in d.paragraphs:

    print(filepath)

    self.cutout_content(content)

    #剪切字符串并且显示

    def cutout_content(self, content):

    current_pos = 0

    search_string_len = len(self.search_string)

    for i in xrange(max_cutouts):

    try:

    #从current_pos位置往后寻找self.search_string个字符串

    pos = content.index(self.search_string, current_pos)

    except ValueError:

    break

    #将显示窗口定义为寻找到的关键字向前向后各content_extract个字符

    content_window = content[ pos - content_extract : pos + content_extract ]

    print (">>>", content_window.encode("String_Escape"))

    current_pos += pos + search_string_len

    print

    #主程序入口

    if __name__ == "__main__":

    search_path = r"c:\Users\Administrator\Desktop"

    file_filter = ("*.docx",".doc") # fnmatch-Filter

    search_string = "history"

    content_extract = 35 #获取摘要35

    max_cutouts = 20 #显示窗口20

    search(search_path, search_string, file_filter)

    更多相关内容
  • python读取xml文件.doc

    2021-11-25 21:52:51
    python读取xml文件.doc
  • python读写 doc文件和docx文件

    千次阅读 2022-04-20 11:39:44
    Python 中可以读取 word 文件的库有 python-docx 和 pywin32。 优点缺点python-docx跨平台只能处理 .docx 格式,不能处理.doc格式pywin32仅限 windows 平台.doc 和 .docx 都能处理。 一. pywin32模块 这个库很...

    背景:

    Python 中可以读取 word 文件的库有 python-docx 和 pywin32。

    优点缺点python-docx跨平台只能处理 .docx 格式,不能处理.doc格式pywin32仅限 windows 平台.doc 和 .docx 都能处理。

    一. pywin32模块

    这个库很强大,不仅仅可以读取 word,但是网上介绍用 pywin32 读取 .doc 的文章真不多,因为,真心不好用。

    以下是 pywin32 读取 .doc 的代码示例,但是读取表格有问题,输出全是空,原因不明,因为不打算用所以没有深入研究。另外,如果表格中有纵向合并单元格,会报错:“无法访问此集合中单独的行,因为表格有纵向合并的单元格。”

    1.将doc转为docx

    python3.8中win32com 要安装pypiwin32 pip install pypiwin32

     

    from win32com import client as wc
    
    word = wc.Dispatch("Word.Application")
    doc = word.Documents.Open(路径+名称.doc)
    doc.SaveAs(路径+名称.docx, 12)   12为docx
    doc.Close()
    word.Quit()

    2.读取段落

    import docx
    docStr = Document(docName)   打开文档
    for paragraph in docStr.paragraphs:
    parStr = paragraph.text
    --》paragraph.style.name == 'Heading 1'  一级标题   
    --》paragraph.paragraph_format.alignment == 1  居中显示
    --》paragraph.style.next_paragraph_style.paragraph_format.alignment == 1  下一段居中显示
    --》paragraph.style.font.color

    3.读取表格

    numTables = docStr.tables
    for table in numTables:
    #行列个数
    row_count = len(table.rows)
    col_count = len(table.columns)
    for i in range(row_count):
        row = table.rows[i].cells
    	i行j列内容:row[j].text
    
    或者:
    row_count = len(table.rows)
    col_count = len(table.columns)
    for i in range(row_count):
        for j in range(col_count):
            print(table.cell(i,j).text)

    4.按样式读取

    读取标题

    for p in doc.paragraphs:
        if p.style.name=='Heading 1':
            print(p.text)
    import re
    for p in doc.paragraphs:
        if re.match("^Heading \d+$",p.style.name):
            print(p.text)

    读取正文

    for p in doc.paragraphs:
        if p.style.name=='Normal':
            print(p.text)

    获取docx支持的样式

    from docx.enum.style import WD_STYLE_TYPE
    for i in s:
        if i.type==WD_STYLE_TYPE.PARAGRAPH:
            print(i.name)

    5.获取文字格式信息

    paragraph 对象 里还有更小的 run 对象,run 对象才包含了段落对象的文字信息。
    paragraph.text 方法也是通过 run 对象的方法获取到文字信息的:

    paragraph.text 方法源码:
    
    def text(self):
         text = ''
            for run in self.runs:
                text += run.text
            return text

    文字的字体、大小、下划线等信息都包含在 run 对象中(不清楚的看前面的博客):

    获取段落的 run 对象列表
    runs = par0.runs
    print(runs)
    获取 run 对象
    run_0 = runs[0]
    print(run_0.text) # 获取 run 对象文字信息
    打印结果:
    坚持因地制宜,差异化打造特色小镇,
    文档 段落 和 run 对象示意:
    获取文字格式信息:
    
    # 获取文字格式信息
    print('字体名称:',run_0.font.name)
    # 字体名称: 宋体
    print('字体大小:',run_0.font.size)
    # 字体大小: 152400
    print('是否加粗:',run_0.font.bold)
    # 是否加粗: None
    print('是否斜体:',run_0.font.italic)
    # 是否斜体: True
    print('字体颜色:',run_0.font.color.rgb)
    # 字体颜色: FF0000
    print('字体高亮:',run_0.font.highlight_color)
    # 字体高亮: YELLOW (7)
    print('下划线:',run_0.font.underline)
    # 下划线: True
    print('删除线:',run_0.font.strike)
    # 删除线: None
    print('双删除线:',run_0.font.double_strike)
    # 双删除线: None
    print('下标:',run_0.font.subscript)
    # 下标: None
    print('上标:',run_0.font.superscript)
    # 上标: None
    LIK2

    6.设置首行缩进

    from docx.shared import Inches,Pt
    par2 = doc.add_paragraph('段落文本')
    # 左缩进,0.5 英寸
    par2.paragraph_format.left_indent = Inches(0.5)
    # 右缩进,20 磅
    par2.paragraph_format.right_indent = Pt(20)
    # 首行缩进
    par2.paragraph_format.first_line_indent = Inches(1)

    查看首行缩进单位

    from docx import Document
    from docx.shared import Inches
    from docx.oxml.ns import qn
    
    from docx.shared import Cm, Pt
    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    
    from docx.shared import RGBColor
    
    myDocument = Document('2020年建交集团3月分析报告.docx')
    
    for paragraph in myDocument.paragraphs:
    	print(paragraph.paragraph_format.first_line_indent)
    	print(dir(paragraph))

    批量的读取doc文档】

    解决方案:利用python将大批.doc文件转化为.docx文件,再读写.docx文件

    问题分析:python利用python-docx (0.8.6)库可以读取.docx文件或.txt文件,且一路畅通无阻,而对.doc文件本身python是无能为力的,那有很多同学就不服气,我手动把.doc文件的后缀名改为.docx或.txt不就解决问题了吗?答案是不能的,简单修改后缀名,那么文件就被你玩坏了,别说打不开,就是打开也是天书啊(乱码)。python无法操作.doc文件是他的先天不足,但是我们不要钻牛角尖一定要在互联网上找到一种源码直接读取.doc文件,一调用就好了,但是不幸的是,你可能在网上也找不到解决方案。正当我一筹莫展之时,我将.doc文档利用手动的方式“另存为”.docx文档,就能够成功打开转化后的.docx文档,于是我就尝试利用代码方式完成这个手动的“另存为”功能,问题得以解决。

    直接上python代码(首先你需要先安装pypewin32库):

    # -*- coding: utf-8 -*-:
    import sys
    import pickle
    import re
    import codecs
    import string
    import shutil
    from win32com import client as wc

    def doSaveAas(): # 想批处理文件,你就用for循环呗,我一次性处理了100多个文件,代码执行不超过2分钟,可以解决问题,目标文件路径可以自由改动,大家注意SaveAs方法中的参数,好多啊,别写错了

    word = wc.Dispatch('Word.Application')
    doc = word.Documents.Open(u'C:\\Users\\X\\PycharmProjects\\1\\大家好.doc')  # 目标路径下的文件
    doc.SaveAs(u'C:\\Users\\X\\PycharmProjects\\1\\我是一枚小小的程序员X007.docx', 12, False, "", True, "", False, False, False, False) # 转化后路径下的文件 
    doc.Close()
    word.Quit()

     

    参考摘取原文:https://www.sohu.com/a/281740874_99987664(感谢大佬)

           https://www.cnblogs.com/zhaobowen/p/13807092.html(感谢大佬)

           https://www.jb51.net/article/139671.htm(感谢大佬)

    【python】后缀为doc的文件读取 - 代码小绵羊 - 博客园

    展开全文
  • 今天小编就为大家分享一篇Python3 读取Word文件方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 先展示下基本的效果,首先我们只有一个doc文件,与python的代码: 我这里用的是doc的word文档,文档内表格如下: 通过python读取后打印: 我这里没有专门按照表格内往excel中写,只是随意写了几个数据: 因为根据...

    效果

    先展示下基本的效果,首先我们只有一个doc文件,与python的代码:
    在这里插入图片描述
    我这里用的是doc的word文档,文档内表格如下:
    在这里插入图片描述
    通过python读取后打印:在这里插入图片描述
    我这里没有专门按照表格内往excel中写,只是随意写了几个数据:
    在这里插入图片描述
    因为根据需要不同,要写的内容也不同,不过方法是差不多的,就是在读取word时把需要的数据存储下来,在写入表格中的时候填入即可。

    程序运行完之后会生产docx文件与xlsx文件:
    在这里插入图片描述


    代码部分:

    首先要先安装相关的模块:
    使用docx文件需要加载:

    pip install python-docx
    

    使用doc文件需要加载:

    pip install pywin32
    

    使用xlsx文件需要加载:

    pip install openpyxl
    

    加载模块出现问题,或者超时之类可以参考我这篇文章:更换pip源等

    接下来是代码部分,注释也都齐全:

    # -*- coding:utf-8 -*-
    
    import os
    import docx
    from docx import Document #导入库
    from win32com.client import Dispatch
    
    '''
    获取绝对地址,
    如果是doc的转换为docx。
    '''
    #文件相对路径
    file_path = "../TEST.doc"
    file_name, file_extension = os.path.splitext(file_path)#获取文件名、文件扩展名
    file_abs_path = os.path.abspath(file_path) #通过相对路径获取绝对路径
    if file_extension in [".doc"]:
        #打开word应用程序
        wd=Dispatch("Word.application")
        #后台运行
        wd.Visible = 0
        wd.DisplayAlerts = 0
        #打开doc文档,必须给一个绝对路径
        doc=wd.Documents.Open(file_abs_path)
        #另存为docx
        doc.SaveAs(file_abs_path+r"x",12)#12表示docx格式
        #关闭文档
        doc.Close()
        #退出word应用
        wd.Quit()
        file_abs_path = file_abs_path+r"x"#更新路径为docx的路径
    
    
    '''
    读取word的表格内的数据,并按行打印。
    '''
    word = Document(file_abs_path) #读入文件
    tables=word.tables
    for i in range(len(tables)):
        tb=tables[i]
        #获取表格的行
        tb_rows=tb.rows
        #读取每一行内容
        for i in range(len(tb_rows)):
            row_data=[]
            row_cells=tb_rows[i].cells
            #读取每一行单元格内容
            for cell in row_cells:
                row_data.append(cell.text)#单元格内容
            print(row_data) #打印整行数据
    
    
    '''
    往excel中填写数据,在读取word时把需要的数据存储下来,
    在写入表格中的时候填入即可。
    '''
    # 导入模块
    from openpyxl import  Workbook 
    from openpyxl import workbook
    from openpyxl import load_workbook
    #新建excel
    wb = Workbook() # 实例化
    ws = wb.active  # 激活 worksheet
    ###打开已有excel表格
    ##wb = load_workbook('../TEST.xlsx')
    ##ws = wb["Sheet1"]
    for i in range(1,8,1):
        ws.cell(row=i, column=i, value=10)#row:行    column:列    value:内容
    wb.save('../TEST.xlsx')    
    print('写入完成!')
    
    
    
    
    

    需要整个工程的话可以加我公众号来获取:

    关注公众号:逸趣汇
    微信号:yiquhui666
    发送:010703 获取下载链接。

    展开全文
  • 主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 文件内容如图:from win32com import client as wcfrom docx import Documentdef word_convert():account_list = []new_file_name = ‘C:/名单2.docx‘file_exists = os.path.exists(new_file_name)if not file_...

    20190110141048463125.png

    文件内容如图:

    from win32com import client as wc

    from docx import Document

    def word_convert():

    account_list = []

    new_file_name = ‘C:/名单2.docx‘

    file_exists = os.path.exists(new_file_name)

    if not file_exists:

    word = wc.Dispatch(‘Word.Application‘)

    doc = word.Documents.Open(‘C:/名单.doc‘)

    doc.SaveAs(‘C:/名单2.docx‘, 12, False, "", True, "", False, False, False,False) # 转化后路径下的文件

    doc.Close()

    word.Quit()

    document = Document(new_file_name)

    tables = document.tables

    for table in tables:

    # 行列个数

    row_count = len(table.rows)

    col_count = len(table.columns)

    for i in range(row_count):

    row = table.rows[i].cells

    if i == 0:

    continue

    for j in range(col_count):

    value_text = row[j].text

    if j == 1:

    account_list.append(value_text) # 我这里获取的是第二列

    return account_list

    先把 doc 文件转换为 docx 读取

    展开全文
  • python基础】——python读写doc/docx/txt/xls文件

    万次阅读 多人点赞 2018-03-16 15:15:39
    1、读取txt文件 #!/usr/bin/python # python3.6 file = open('E:\\个人文件\\6-desktop\\new.txt','r') for line in file: print(line) 2、读取docx文件的内容 1)Python可以利用python-docx模块处理w...
  • 读取doc的方法则是先将doc转换为docx,需要安装python-mpipinstallpypiwin32。读取docx需要安装pipinstallpython-docx。
  • 1.python实现对doc文档的读取 2.python实现对txt文档的读取 3.python实现对xls表格的读取 1.python实现对doc文档的读取 #读取docx中的文本代码示例 import docx #获取文档对象 file=docx.Document("path") ...
  • 0.37/ 运行make命令,进行等待 make 运行make install命令,进行等待 make install 接下来就可以使用antiword对doc文件进行读取 import subprocess word = "1.doc" output = subprocess.check_output(["antiword", ...
  • 大家都知道当我们利用java语言读写.doc文件时,无论是利用流的方式将.doc文件的内容输出到控制台(console),还是将其写到其他文件中,无论你采取何种编码格式(utf-8,gbk等)输出,你看到的内容99%都是乱码。...
  • Python读取doc文件中的图片

    千次阅读 2019-02-24 15:37:15
    最近需要搜集整理doc文件中的图片和内容,由于数据量比较大,尝试使用Python进行内容提取。网上找了很多资料,利用Win32com组件应该可以实现,但是其中读取表格和图片的方法比较复杂,弄了半天没搞出来。网上还有一...
  • 使用第三方库python-docx读取文档 python-docx官方文档:https://python-docx.readthedocs.io/en/latest/ 安装:pip install python-docx 导入:import docx 注意:python-docx只能处理word2007以后的版本(.docx) 1....
  • python读取doc/docx文件

    万次阅读 2019-06-09 00:40:24
    仅此记录python读取doc/docx文件的方法,和常用简单的open txt文件完全不同(版本python 3.6 Win10) docx 使用docx包,python为其专用接口,python-docx,使用 pip install python-docx 安装即可,本人第一次...
  • 2019独角兽企业重金招聘Python工程师标准>>> 在linux上用PHP读取WORD文档,其实是使用了 antiword程序把word文档转化为txt文档。再使用php执行系统命令调用而已。具体操作如下:1、安装antiword官方站:...
  • 备注:doc是微软的专有的文件格式,docx是Microsoft Office2007之后版本使用,其基于Office Open XML标准的压缩文件格式,比doc文件所占用空间更小。docx格式的文件本质上是一个ZIP文件,所以其实也可以把.docx文件...
  • pythondoc文件转换成docx文件

    千次阅读 2022-01-17 16:30:46
    python3将doc文件批量转换成docx文件
  • 这也就意味着你可以在Linux下读取Excel文件。首先,打开workbook;复制代码 代码如下:import xlrdwb = xlrd.open_workbook('myworkbook.xls')检查表单名字:复制代码 代码如下:wb.sheet_names()得到第一张表单,两种...
  • 初学python,现在要读一个二进制文件,查找doc只发现 file提供了一个read和write函数,而且读写的都是字符串,如果只是读写char等一个字节的还行,要想读写如int,double等多字节数 据就不方便了。在网上查到一篇贴子...
  • 读取docx文档 使用的包是python-docx 1. 安装python-docx包 sudo pip install python-docx 2. 使用python-docx包读取数据...python-docx这个包是不能处理doc文档的,要读取doc文档内容的话需要使用antiword这个工具。
  • 本文实例讲述了python读取word文档的方法。分享给大家供大家参考。具体如下:首先下载安装win32com123456from win32comimport client as wcword= wc.Dispatch('Word.Application')doc= word.Documents.Open('c:/test...
  • 本文实例讲述了Python实现将doc转化pdf格式文档的方法。分享给大家供大家参考,具体如下: #-*- coding:utf-8 -*- # doc2pdf.py: python script to convert doc to pdf with bookmarks! # Requires Office 2007 SP2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,089
精华内容 16,435
关键字:

python读取doc文件