Python打开文件并进行处理,txt、excel、pdf、word!

这篇具有很好参考价值的文章主要介绍了Python打开文件并进行处理,txt、excel、pdf、word!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 概要

在办公处理中,我们常常要打开一些文件,面临大量的数据时,传统的人工方法耗时耗力。在python中,有一系列包装好的库,让我们能够很方便的操作各种类型的文件。当然,python的内置函数也能够很好的打开一些文件。本文主要探讨python打开各类文件的方式。本文介绍的主题内容如下所示:

Python打开文件并进行处理,txt、excel、pdf、word!

2. 操作txt文本文件

2.1 打开模式

file = open(path,'r')

我们可以用多种不同的方式去打开txt文件,具体类型如下:

类型 读写操作 备注
r 只读 /
w 只写 覆盖
a 只写 追加
r+ 可读可写 覆盖
w+ 可读可写 覆盖
a+ 可读可写 追加

不同的打开模式获得不同的权限。另外,使用w、a以及w+、a+模式打开不存在的文件时,系统会创建一个文件,而使用 r 和 r+ 则会报错。

2.2 读取方式

一般情况下,如果只是要读取文件内的内容,那么我们可以不输入打开模式参数,默认为”r”。

(1)read()

read() 一次性读全部内容 一次性读取文本中全部的内容,以字符串的形式返回结果。

f = open('example.txt',encoding = 'utf-8')
content = f.read()
print(content)
f.close()

打印出来的结果如下所示:

当你老了
头发花白

你会发现输出出来的文本样式,和在记事本里看到的基本一致。注意,两行之间存在换行符。

(2)readline()

readline() 读取第一行内容,只读取文本第一行的内容,以字符串的形式返回结果。这个函数一般用于循环读取,将每一行的内容作为元素装入列表。

f=open('example.txt', encoding='utf-8')
line = f.readline().strip()    #读取第一行
txt=[]
txt.append(line)
while line:  # 直到读取完文件
   line = f.readline().strip()  # 读取一行文件,包括换行符
   txt.append(line)
f.close()  # 关闭文件
print(txt)

输出的结果如下所示:

['当你老了', '头发花白', '']

这里每个字符串末尾之所以没有出现换行符,是因为使用**strip()**函数进行了处理。另外我们也可以像下面这样,处理文本文件的每一行,其本质是和上面一样的。

txt = []
for line in f:
	......

(3)readlines()

readlines()读取文本所有内容,并且以数列的格式返回结果。这里返回的结果其实是和上面使用 readline() 逐行读取的结果是一样的,不再过多展示。

f=open('example.txt',encoding='utf-8')
data = f.readlines()  
f.close() 
print(data) #返回list

2.3 写入文件

在文件中写入内容,需要打开文件,主要用到 write() 函数。注意 wirte() 写入后默认不换行。

f = open('example.txt','a+',encoding = 'utf-8')     # 选择了可读可写的追加模式
f.write('\n睡意沉沉')
f.close()

f=open('example.txt',encoding='utf-8')
print(f.read())
f.close()  

打印出的结果如下所示:

当你老了
头发花白
睡意沉沉

注意,这里我们在写入后先关闭了文件,而后再重新打开文件读取。因为 readline() 和readlines() 以及 read() 函数都是根据指针进行读取的,如果直接在写完以后进行读取,那么读到的一定是空白。

3. 读取excel文件数据

打开excel的方式有很多,本文主要介绍一种方法,使用pandas将excel数据转化为dataframe结构。

import pandas as pd
df = pd.read_excel('example.xlsx',sheet_name = 'Sheet1',converters={'id':str})
df.head()

通过“sheet_name"指定对应得工作表。另外,在excel中,有一些编码信息,如学号或者id,可能以0开头,在默认情况下python会将其理解为整数!并将其前面的0给截断。所以使用后面得 converters 参数进行以后类型转换。

现在,python有很多开发好的优秀的处理excel的包,如openpyxl、xlwt,但如果仅仅是为了读取数据,其实使用pandas就已经非常足够了。但如果是要对 excel 文件进行编辑操作的话,我更加推荐的是使用 openpyxl 库,这里不再过多介绍。

pandas中得dataframe是一个很强大的数据结构,能够很快的索引到想要的信息。在本例中,示例文件中的数据如下所示:

id age weight
001 14 60
002 15 65
003 16 62
004 17 64
005 18 65

获取某一列的数据,这里其实返回的是一个series结构。

id_s = df['id']

获取某一行的数据,并获取该行的单独某一项。

temp = df.iloc[0]
print(temp,end = '\n\n')
print(temp.id,temp.age,temp.weight)

该代码的运行结果如下所示:

id         001
age         14
weight    60.0
Name: 0, dtype: object

001 14 60.0

4. 读取PDF–PyMuPdf

PDF(Portable Document Format)是一种便携文档格式,便于跨操作系统传播文档。PDF文档遵循标准格式,因此存在很多可以操作PDF文档的工具,Python自然也不例外。本文主要介绍一种好用的的 python-pdf 包——PyMuPdf。

PyMuPDF是MuPDF的Python绑定——一个轻量级的PDF,XPS和电子书查看器,渲染器和工具包,由Artifex软件公司维护和开发。

打开一个文件。

doc = fitz.open(filename)

常见方法和属性:

Method / Attribute Description
Document.page_count the number of pages (int)
Document.metadata the metadata (dict)
Document.get_toc() get the table of contents (list)
Document.load_page() read a page

如何读取pdf文件内的全部文本:

import fitz
# 定义一个函数,根据文件路径读取pdf文件,并返回pdf文本的字符串
def read_pdf(path):
    doc = fitz.open(path)
    txt = ''
    for page in doc.pages():
        temp = page.get_text()
        txt += temp
    return txt

为什么选择PyMuPDF?对比其它的开源包,它最大的特点就是运行速度较快,毕竟谁也不想花很长时间等待运行结果。除了简单的读取文本,该库还支持读取图片、读取表格、高亮标记等一系列功能,更多详情请见官方文档。

5. Word的读取与写入

这里主要介绍python-docx。先简单了解一下Word文档。和纯文本(比如txt)相比, .docx文件有很多种结构,这些结构在python-docx中用3种不同的类型来表示:最高一层是Document对象表示文档,每个Document对象包含一个Paragraph 对象也就是段落组成的列表,而每个Paragraph对象则包含一个Run对象的列表。

也可以用它来处理表格,基本结构如下:

  • python-docx将文章中所有的表格都存放在document.tables
  • 每个Table都有对应的行table. rows、列table. columns和单元格(table. cell())
  • 单元格是最基本的单位,每个单元格又被划分成不同的Paragraph对象

具体的结构图如下所示:

Python打开文件并进行处理,txt、excel、pdf、word!

5.1 读取文档

下面我们通过python-docx来读取word文档,并查看相关属性。

import docx
# 读取Word文档
doc = docx.Document(r'python.docx')
print( len(doc.paragraphs))    # 查看段落数量
print(doc.paragraphs[0].text)    # 查看第一段的内容
# print(doc.paragraphs[0].runs)    # 查看第一段的run对象
print(len(doc.paragraphs[0].runs))   # 查看第一段中run对象的个数
for i in range(10):
    print(doc.paragraphs[0].runs[i].text,end = ' ')

如果要读取word的完整文本内容,我们自定义一个函数,使用换行符来分隔开每一段。

def getText(fileName):
    doc = docx.Document(fileName)
    TextList = []
    for paragraph in doc.paragraphs:
        TextList.append(paragraph.text)
    
    return '\n'.join(TextList)

5.2 写入文档

对于Run对象的字符text属性,都有3个状态:True(启用)、False(禁用)和None(默认)。text的常见属性如下:

属性 描述
bold 文本以粗体出现
italic 文本以斜体出现
underline 文本带下划线
strike 文本带删除线
double_strike 文本带双删除线

接下来我们看看如何创建并写入Word,要创建自己的.docx 文件,就调用 docx.Document(),返回一个新的、空白的 Word Document 对象 。Document 对象的 add_paragraph()方法将一段新文本添加到文档中,并返回添加的 Paragraph 对象的引用。

import docx

doc = docx.Document()
doc.add_paragraph('这是一个段落')
doc.add_run('加粗的一句话').bold = True
doc.add_paragraph('这是第二个段落')
doc.save('多段落.docx')

常用的添加方法:

方法 作用
add_paragraph() 添加段落
add_run() 在当前段落尾加上词 / 句
add_break() 添加换行符(仍然当前段落)
add_picture 在段落末尾添加图像

6. 参考资料

【1】python读取txt文件(多种方法)总裁余(余登武)的博客

【2】python读取、写入txt文本内容

【3】使用Python操作PDF:常用PDF库总结

【4】Recipes: Text — PyMuPDF 1.20.2 documentation

【5】用Python读写Word文档入门 - 腾讯云开发者社区-腾讯云 (tencent.com)

【6】python docx 使用总结 - 简书 (jianshu.com)文章来源地址https://www.toymoban.com/news/detail-401781.html

到了这里,关于Python打开文件并进行处理,txt、excel、pdf、word!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包