国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python打開文件并進(jìn)行處理,txt、excel、pdf、word!

這篇具有很好參考價(jià)值的文章主要介紹了Python打開文件并進(jìn)行處理,txt、excel、pdf、word!。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 概要

在辦公處理中,我們常常要打開一些文件,面臨大量的數(shù)據(jù)時(shí),傳統(tǒng)的人工方法耗時(shí)耗力。在python中,有一系列包裝好的庫,讓我們能夠很方便的操作各種類型的文件。當(dāng)然,python的內(nèi)置函數(shù)也能夠很好的打開一些文件。本文主要探討python打開各類文件的方式。本文介紹的主題內(nèi)容如下所示:

Python打開文件并進(jìn)行處理,txt、excel、pdf、word!

2. 操作txt文本文件

2.1 打開模式

file = open(path,'r')

我們可以用多種不同的方式去打開txt文件,具體類型如下:

類型 讀寫操作 備注
r 只讀 /
w 只寫 覆蓋
a 只寫 追加
r+ 可讀可寫 覆蓋
w+ 可讀可寫 覆蓋
a+ 可讀可寫 追加

不同的打開模式獲得不同的權(quán)限。另外,使用w、a以及w+、a+模式打開不存在的文件時(shí),系統(tǒng)會(huì)創(chuàng)建一個(gè)文件,而使用 r 和 r+ 則會(huì)報(bào)錯(cuò)。

2.2 讀取方式

一般情況下,如果只是要讀取文件內(nèi)的內(nèi)容,那么我們可以不輸入打開模式參數(shù),默認(rèn)為”r”。

(1)read()

read() 一次性讀全部內(nèi)容 一次性讀取文本中全部的內(nèi)容,以字符串的形式返回結(jié)果。

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

打印出來的結(jié)果如下所示:

當(dāng)你老了
頭發(fā)花白

你會(huì)發(fā)現(xiàn)輸出出來的文本樣式,和在記事本里看到的基本一致。注意,兩行之間存在換行符。

(2)readline()

readline() 讀取第一行內(nèi)容,只讀取文本第一行的內(nèi)容,以字符串的形式返回結(jié)果。這個(gè)函數(shù)一般用于循環(huán)讀取,將每一行的內(nèi)容作為元素裝入列表。

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()  # 關(guān)閉文件
print(txt)

輸出的結(jié)果如下所示:

['當(dāng)你老了', '頭發(fā)花白', '']

這里每個(gè)字符串末尾之所以沒有出現(xiàn)換行符,是因?yàn)槭褂?*strip()**函數(shù)進(jìn)行了處理。另外我們也可以像下面這樣,處理文本文件的每一行,其本質(zhì)是和上面一樣的。

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

(3)readlines()

readlines()讀取文本所有內(nèi)容,并且以數(shù)列的格式返回結(jié)果。這里返回的結(jié)果其實(shí)是和上面使用 readline() 逐行讀取的結(jié)果是一樣的,不再過多展示。

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

2.3 寫入文件

在文件中寫入內(nèi)容,需要打開文件,主要用到 write() 函數(shù)。注意 wirte() 寫入后默認(rèn)不換行。

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()  

打印出的結(jié)果如下所示:

當(dāng)你老了
頭發(fā)花白
睡意沉沉

注意,這里我們在寫入后先關(guān)閉了文件,而后再重新打開文件讀取。因?yàn)?readline() 和readlines() 以及 read() 函數(shù)都是根據(jù)指針進(jìn)行讀取的,如果直接在寫完以后進(jìn)行讀取,那么讀到的一定是空白。

3. 讀取excel文件數(shù)據(jù)

打開excel的方式有很多,本文主要介紹一種方法,使用pandas將excel數(shù)據(jù)轉(zhuǎn)化為dataframe結(jié)構(gòu)。

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

通過“sheet_name"指定對應(yīng)得工作表。另外,在excel中,有一些編碼信息,如學(xué)號或者id,可能以0開頭,在默認(rèn)情況下python會(huì)將其理解為整數(shù)!并將其前面的0給截?cái)?。所以使用后面?converters 參數(shù)進(jìn)行以后類型轉(zhuǎn)換。

現(xiàn)在,python有很多開發(fā)好的優(yōu)秀的處理excel的包,如openpyxl、xlwt,但如果僅僅是為了讀取數(shù)據(jù),其實(shí)使用pandas就已經(jīng)非常足夠了。但如果是要對 excel 文件進(jìn)行編輯操作的話,我更加推薦的是使用 openpyxl 庫,這里不再過多介紹。

pandas中得dataframe是一個(gè)很強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),能夠很快的索引到想要的信息。在本例中,示例文件中的數(shù)據(jù)如下所示:

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

獲取某一列的數(shù)據(jù),這里其實(shí)返回的是一個(gè)series結(jié)構(gòu)。

id_s = df['id']

獲取某一行的數(shù)據(jù),并獲取該行的單獨(dú)某一項(xiàng)。

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

該代碼的運(yùn)行結(jié)果如下所示:

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

001 14 60.0

4. 讀取PDF–PyMuPdf

PDF(Portable Document Format)是一種便攜文檔格式,便于跨操作系統(tǒng)傳播文檔。PDF文檔遵循標(biāo)準(zhǔn)格式,因此存在很多可以操作PDF文檔的工具,Python自然也不例外。本文主要介紹一種好用的的 python-pdf 包——PyMuPdf。

PyMuPDF是MuPDF的Python綁定——一個(gè)輕量級的PDF,XPS和電子書查看器,渲染器和工具包,由Artifex軟件公司維護(hù)和開發(fā)。

打開一個(gè)文件。

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文件內(nèi)的全部文本:

import fitz
# 定義一個(gè)函數(shù),根據(jù)文件路徑讀取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?對比其它的開源包,它最大的特點(diǎn)就是運(yùn)行速度較快,畢竟誰也不想花很長時(shí)間等待運(yùn)行結(jié)果。除了簡單的讀取文本,該庫還支持讀取圖片、讀取表格、高亮標(biāo)記等一系列功能,更多詳情請見官方文檔。

5. Word的讀取與寫入

這里主要介紹python-docx。先簡單了解一下Word文檔。和純文本(比如txt)相比, .docx文件有很多種結(jié)構(gòu),這些結(jié)構(gòu)在python-docx中用3種不同的類型來表示:最高一層是Document對象表示文檔,每個(gè)Document對象包含一個(gè)Paragraph 對象也就是段落組成的列表,而每個(gè)Paragraph對象則包含一個(gè)Run對象的列表。

也可以用它來處理表格,基本結(jié)構(gòu)如下:

  • python-docx將文章中所有的表格都存放在document.tables
  • 每個(gè)Table都有對應(yīng)的行table. rows、列table. columns和單元格(table. cell())
  • 單元格是最基本的單位,每個(gè)單元格又被劃分成不同的Paragraph對象

具體的結(jié)構(gòu)圖如下所示:

Python打開文件并進(jìn)行處理,txt、excel、pdf、word!

5.1 讀取文檔

下面我們通過python-docx來讀取word文檔,并查看相關(guān)屬性。

import docx
# 讀取Word文檔
doc = docx.Document(r'python.docx')
print( len(doc.paragraphs))    # 查看段落數(shù)量
print(doc.paragraphs[0].text)    # 查看第一段的內(nèi)容
# print(doc.paragraphs[0].runs)    # 查看第一段的run對象
print(len(doc.paragraphs[0].runs))   # 查看第一段中run對象的個(gè)數(shù)
for i in range(10):
    print(doc.paragraphs[0].runs[i].text,end = ' ')

如果要讀取word的完整文本內(nèi)容,我們自定義一個(gè)函數(shù),使用換行符來分隔開每一段。

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個(gè)狀態(tài):True(啟用)、False(禁用)和None(默認(rèn))。text的常見屬性如下:

屬性 描述
bold 文本以粗體出現(xiàn)
italic 文本以斜體出現(xiàn)
underline 文本帶下劃線
strike 文本帶刪除線
double_strike 文本帶雙刪除線

接下來我們看看如何創(chuàng)建并寫入Word,要?jiǎng)?chuàng)建自己的.docx 文件,就調(diào)用 docx.Document(),返回一個(gè)新的、空白的 Word Document 對象 。Document 對象的 add_paragraph()方法將一段新文本添加到文檔中,并返回添加的 Paragraph 對象的引用。

import docx

doc = docx.Document()
doc.add_paragraph('這是一個(gè)段落')
doc.add_run('加粗的一句話').bold = True
doc.add_paragraph('這是第二個(gè)段落')
doc.save('多段落.docx')

常用的添加方法:

方法 作用
add_paragraph() 添加段落
add_run() 在當(dāng)前段落尾加上詞 / 句
add_break() 添加換行符(仍然當(dāng)前段落)
add_picture 在段落末尾添加圖像

6. 參考資料

【1】python讀取txt文件(多種方法)總裁余(余登武)的博客

【2】python讀取、寫入txt文本內(nèi)容

【3】使用Python操作PDF:常用PDF庫總結(jié)

【4】Recipes: Text — PyMuPDF 1.20.2 documentation

【5】用Python讀寫Word文檔入門 - 騰訊云開發(fā)者社區(qū)-騰訊云 (tencent.com)

【6】python docx 使用總結(jié) - 簡書 (jianshu.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-401781.html

到了這里,關(guān)于Python打開文件并進(jìn)行處理,txt、excel、pdf、word!的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包