首页 > 技术文章 > python自动化2-自动化处理excel、word、pdf

tensorzhang 2021-10-27 09:41 原文

1,excel-pandas

  • pandas.read_excel读取.xlsx文件,pandas.read_csv读取.csv文件
  • 多表数据:将None传递给read_excel函数,返回的是一个key为表名的字典,字典的每一个value是一个DataFrame
    import pandas as pd
    f = pd.read_excel('test.xlsx',None)
    sheet_ls = f.keys()
    
  • 都是pandas的基本操作,做数据处理的应该都会。

2,pdf——PyPDF2

  • PyPDF2 没有办法从 PDF 文档中提取图像、图表或其他媒体,但它可以提取文本,并将文本返回为 Python 字符串。
'''将basePath下的pdf文件合并为一个'''
import PyPDF2, os

#get all pdf files from basePath and sort these files by their names
basePath = r''
pdfList = []
for file in os.listdir(basePath):
    if file.endswith('.pdf'):
        pdfList.append(file)
pdfList.sort()

#create PdfFileWriter to store and merge pdf files
pdfWriter = PyPDF2.PdfFileWriter()

#open the pdf files and store each page in PdfFileWriter
for pdf in pdfList:
    pdfReader = PyPDF2.PdfFileReader(open(os.path.join(basePath, pdf), 'rb'))
    print(pdfReader.numPages)
    for pageNum in range(pdfReader.numPages):
        pageObj = pdfReader.getPage(pageNum)
        pdfWriter.addPage(pageObj)
        
#save the PdfFileWriter to a file
pdfWriter.write(open('pdfMergeResult.pdf', 'wb'))

3,word——python-docx

  • 利用 python-docx 模块,安装:python-docx,导入:import docx
  • 和纯文本相比,.docx 文件有很多结构。这些结构在 python-docx 中用 3 种不同的类型来表示。在最高一层,Document 对象表示整个文档。Document 对象包含一个 Paragraph 对象的列表,表示文档中的段落(用户在 Word 文档中输入时,如果按下回车,新的段落就开始了)。每个 Paragraph 对象都包含一个 Run 对象的列表。
    • 调用doc = docx.Document('demo.docx'),这将获取一个 Document 对象,它有 paragraphs 属性,是 Paragraph对象的列表。对 doc.paragraphs 调用 len(),可以获取文档有几个Paragraph对象。
    • 每个 Paragraph 对象都有一个 text 属性,包含该段中文本的字符串(没有样式信息)。
    • 每个 Paragraph 对象也有一个 runs 属性,它是 Run 对象的列表。Run 对象也有一个 text 属性,包含那个延续中的文本。
  • Word 文档中的文本不仅仅是字符串。它包含与之相关的字体、大小、颜色和其他样式信息。在 Word 中,样式是这些属性的集合。一个 Run 对象是相同样式文本的延续。当文本样式发生改变时,就需要一个新的 Run 对象。
  • 对于 Word 文档,有 3 种类型的样式:段落样式可以应用于 Paragraph 对象,字符样式可以应用于 Run 对象,链接的样式可以应用于这两种对象。可以将 Paragraph 和Run 对象的 style 属性设置为一个字符串,从而设置样式。这个字符串应该是一种样式的名称。如果 style 被设置为 None,就没有样式与 Paragraph 或 Run 对象关联。

推荐阅读