python辦公自動化(二) | 讀取.txt、.data、.doc和.docx文檔的部分內容

2021-02-13 文科數據員

python的文件操作,是python辦公自動化的最基礎部分。今天,數據猿就嘗試對四種格式的文檔,進行部分內容讀取的操作,實現讀取文件操作的辦公自動化~

目錄如下——


讀取文本文檔with 語句讀取部分內容

python最基本的文件讀取是採用open()函數,但需要close()來關閉文件,否則會報錯,所以建議使用with語句來讀取一般的txt文件。

with open('file.txt',encoding='utf-8',sep='\n') as f:
   alltxt = f.read()

如果要將其中一部分讀取出來,怎麼辦呢?

有兩種方法可以解決問題。

方法一:.find()定位下標法

使用.find()查找目標文字的下標,然後利用此下標進行字符串切片。

s = alltxt.find('這是這部分開頭。')
e = alltxt.find('這是這部分結尾。')
alltxt[s:e]

方法二:.index()索引法

index()索引法和find()方法基本一致。

s_txt = '這是這部分開頭。'
e_txt= '這是這部分結尾。'
alltxt[alltxt.index(s_txt):alltxt.index(e_txt)+len(e_txt)]


find(substr, beg=0, end=len(string))

在[beg, end]範圍內查找substring,找到返回substr的起始下標,否則返回 -1。

index(substr,beg=0,end=len(string))

同find()類似,不同的是,如果未找到substr,則返回一個異常 ValueError: substring not found。


如果需要讀取的文件是.csv和.data文件,這類文件類似表格,with語句的讀取方式就相對複雜,因此需要採用pandas庫來讀取。


pandas讀取.data文件

學機器學習的小夥伴會發現,在使用最初的數據集的時候,需要與UCI的機器「機器學習倉庫:學習和智能系統中心」(Machine Learning Repository:Center for Machine Learning and Intelligent Systems)的數據集打交道。

如果是使用庫自帶的數據集還好,直接load_iris(),如果需要下載這個網站的最新數據集,則要下載此類文件——


我們會發現,這裡的鳶尾花數據集是.data格式。要想讀取.data文件,就需要使用pandas。如下所示——

import pandas as pd
data=pd.read_csv('iris.data',names=['sepal_lengh_cm','sepal_width_cm','petal_length_cm','petal_width_cm','class'],sep=",",skiprows=1)
data.head(5)

pd.read_csv()既可以讀取csv文件,還可以讀取.data和。.txt文件,非常好用。但是,需要注意設定sep=','根據數據需要調整分隔符。


讀取doc文檔

在日常工作中,我們經常會遇到,給定一個.doc文檔,要求從中提取一部分文字存起來。

但是,.doc格式比較老,python中沒有庫讀寫.doc,所以就需要一個系統工具的庫(這裡是win32com)來打開word應用,將.doc轉存為另存為.docx,再使用python-docx進行讀寫,以完成自動化操作。

首先,導入必要的庫。這裡需要os庫獲取當前路徑和電腦絕對路徑,以此找到word應用並打開doc文件。

# 將.doc文件轉成.docx
import os
import time
import win32com
from win32com.client import Dispatch

然後,構造另存函數。主要流程為

打開word應用——找到目標文件——打開目標文件——另存目標文件——退出。

def doc2docx(path):
   w = win32com.client.Dispatch('Word.Application')
   w.Visible = 0
   w.DisplayAlerts = 0
   doc = w.Documents.Open(path)
   # 這裡必須要絕對地址,保持和doc路徑一致
   newpath = allpath+'\目標讀取文檔.docx'
   time.sleep(3)# 暫停3s,否則會出現-2147352567,錯誤
   doc.SaveAs(newpath,12,False,"",True,"",False,False,False,False)
   # doc.Close() 開啟則會刪掉原來的doc
   w.Quit()# 退出
   return newpath
allpath = os.getcwd()
print(allpath)
doc2docx(allpath+'\目標讀取文檔.doc')

讀取docx文檔部分內容

導入python-docx庫,注意這裡寫import docx即可。

但是,pip下載第三方庫的時候要下載python-docx,否則會出錯。

docx是按照段落讀取的,所以需要列表解析式+.join()來形成一個長字符串,以便進行上文所示的字符串切片,從而讀取部分內容。

import docx
fn = r'目標讀取文檔.docx'

doc = docx.Document(fn)
pa = [p.text for p in doc.paragraphs]
pa1 = ''.join(pa)

使用上文中的str.index索引法讀取部分內容——

start_txt = 'A'
final_txt = 'B'
pa2 = pa1[pa1.index(start_txt):pa1.index(final_txt)+len(final_txt)]
pa2



往期精品:

python辦公自動化(一) | chardet庫自動讀寫多編碼格式的文件

社會網絡分析(一) | python的Networkx庫基礎知識

社會網絡分析(二) | 論文閱讀:中國與國際媒體互引的社會網絡分析

社會網絡分析(三) | 社會網絡分析中的基本概念

數據可視化入門(三) | matplotlib柱形圖進行實驗數據的對比


本文系純原創,如有紕漏,敬請指出

文字編輯:數據猿Riggle

首發平臺:微信公眾號:文科數據


相關焦點

  • Python辦公自動化| word 表格轉excel
    之前寫過一篇 Python辦公自動化 | 批量word報告生成工具 ,有小夥伴提出了逆向需求,即:從批量word中獲取內容並寫入excel,需求背景是匯總一些材料,舉例:實習鑑定表、個人簡歷、檔案等。實際需求是這樣的,現在有如下格式的若干word文檔,需要錄入標黃信息到excel,手工錄入效率太低了,能不能用python實現呢?
  • 【Python基礎】python使用python-docx操作word
    1、python-docx庫介紹該模塊兒可以創建、修改Word(.docx)文件;python-docx使用官網:python-docx官網我們在安裝此模塊兒使用的是pip install python-docx,但是在導入的時候是import docx;2、Python讀取Word文檔內容注意:每進行一個操作,必須保存一下,否則等於白做;1)word文檔結構介紹在這裡插入圖片描述2)python-docx
  • Python自動化辦公(內容)
    python自動化辦公(python操作Excel、Word、PDF、PPT)python使用openpyxl操作excel;python使用PyPDF2和pdfplumber操作excel1、openpyxl庫介紹2、python怎麼打開及讀取表格內容?
  • 文科生快速入門python(十三) | 文件讀寫詳解
    除了之外【python辦公自動化(一) | chardet庫自動讀寫多編碼格式的文件】中描述的編碼錯誤外,還有忘記close()造成讀不到文件、搞混r,w,a,x模式、寫錯read, readline, readlines方法之類的常見錯誤。
  • python-docx無法處理 「doc格式」 文件,於是我這樣做......
    對於Word文件,出現doc和docx的混合文件,又該怎麼處理。你可能會用VBA,但是不得不說,批量操作這些文件,還是要學Python,操作真的很簡單。為了增強文章的可讀性,我們分2篇文章講述這些問題。今天,我們講述的是如何將doc文件 轉換為 docx文件。
  • 聊聊python 辦公自動化之 Word(中)
    作者:星安果 來源:AirPython(公眾號)上一篇文章,對 Word 寫入數據的一些常見操作進行了總結,詳情請看聊聊python 辦公自動化之 Word(上)。相比寫入數據,讀取數據同樣很實用!本篇文章,將談談如何全面讀取一個 Word 文檔中的數據,並會指出一些要注意的點。
  • 別加班了,「膠水語言」辦公自動化Word篇——一招搞定300頁文檔
    這兩天在更新Python在辦公自動化方面的文章,前面發的是關於辦公軟體中的Excel部分,有網友私信我說想看看Python在Word方面的應用,今天就給大家從基礎的入門操作開始吧!我們在工作中會遇到需要讀取一個有幾百頁的word文檔並從中整理出一些信息的需求,比如產品的API文檔一般是word格式的。
  • 實例15:用Python批量轉換doc文件為docx文件
    python-docx模塊雖然強大,但卻不能處理後綴為".doc"的word文件。如果強制讀取doc文件,將會報如下錯誤。
  • 打開Word文檔論doc與docx格式的區別
    ,我們都會都會在寫一些東西,一般情況下都是新建一個文檔,除了內容較少創建一個txt純文本。當你點擊左鍵開始新建文檔,你有沒有想過是建立doc格式還是建立docx格式。雖然兩者現在都可以用Office和WPS打開,而且兩者之間可以進行格式轉換,但是兩者之間還是有著一些區別,對於還寫還在寫著論文的人來說可以了解一下喲。
  • 使用 Python 操作 word文檔
    最近手頭有一個需求是對word文檔內容進行判斷,搜索到一個包感覺不錯,簡單記錄一下關鍵操作:python-docx能做什麼
  • 用Python讀寫Word文檔入門
    讀取Word文檔3. 寫入Word文檔這裡我們用到的是python-docx模塊,讀寫Word文檔的操作均有它完成!和純文本(比如txt)相比, .docx文件有很多種結構,這些結構在python-docx中用3種不同的類型來表示:最高一層是Document對象表示文檔,每個Document對象包含一個Paragraph 對象也就是段落組成的列表,而每個Paragraph對象則包含一個Run對象的列表,至於Run對象大家可以通過下面的段落Paragraph來了解。
  • Python辦公自動化|從Excel到Word
    Excel獲取內容docx讀寫Word文件首先來看下我們需要處理的Excel部分數據,因涉及隱私已經將數據皮卡丘化可以看到數據非常多,並且還存在重複數據。 '模板.docx'# doc轉docx的函數def doc2docx(doc_path,docx_path):    word = client.Dispatch("Word.Application")    doc = word.Documents.Open(doc_path)    doc.SaveAs(docx_path, 16)    doc.Close
  • Python自動化用這些知識點就夠了!
    這可能是很多非IT職場人士面臨的困惑,想把python用到工作中,卻不知如何下手?python在自動化辦公領域越來越受歡迎,批量處理簡直是加班族的福音。自動化辦公無非是excel、ppt、word、郵件、文件處理、數據分析處理、爬蟲這些,這次就來理一理python自動化辦公的那些知識點。下面一一詳解。
  • 講一講我是如何通過Python實現辦公自動化的
    我們需要學習的主要內容有:python基礎;excel自動化;ppt自動化;word自動化。對於python語法的要求,你可以對照python基礎教程的部分查看需要學那些,找個免費視頻教程跟著學,然後多敲代碼練習。如果習慣看書的話,可以買本python入門書備查。
  • 統信UOS中用命令將DOC轉換為DOCX
    前言在之前的一篇文章中,介紹了用libreoffice來將doc文檔轉換為docx文檔的方法,並說明了如何將這些轉換命令寫入程序中
  • Python實戰009:讀取Word文檔中的表格數據及表格合併問題解決
    首先我們需要安裝python-docx,直接執行命令:pip install python-docx即可安裝。當前的python-docx的版本為0.8.10,當python-docx安裝完畢後通過python命令啟動Python並輸入import docx命令,如果沒有提示任何錯誤即表示python-docx安裝成功了。
  • 兩行代碼讀取pdf、docx文件
    最近運行課件代碼,發現pdf文件讀取部分的函數失效。這裡找到讀取pdf文件的可運行代碼,為了方便後續學習使用,我已將pdf和docx讀取方法封裝成pdfdocx包。pdfdocx只有簡單的兩個讀取函數file為文件路徑,函數運行後返回file文件內的文本數據。
  • 最全總結 | 聊聊 Python 辦公自動化之 Word(下)
    新增數字索引我們經常需要在文檔頁腳處添加頁面數字索引,可惜 python-docx 並沒有提供現有方法但是,在 stackoverflow 上找到實現的方式https://stackoverflow.com/questions/56658872/add-page-number-using-python-docx?
  • Python自動化辦公 | 補寫178份Word日報!
    1,每個部門記錄數 ≥ 1)兩種情況,需分別整理成兩種日報,一為純文本描述,二為附帶表格的文檔。1、純文本文檔根據需要輸出的日報樣式,輸出無記錄的日報只需讀取【日期】列和【填報部門】列,將【填報部門】列為無的日期段按每日輸出即可。
  • Python 自動化辦公—Word 文本操作命令
    之前介紹了一個Python包 openpyxl ,用於處理 Excel ;而對於 Word 文本時同樣也有對應的 Python庫 Python-docx,在日常辦公中,如果需要處理多個 word 文本,且操作步驟都是重複單調的,我想這個庫就可以幫到你在了解 Python-docx 常用函數之前,需要知道 在 Python-docx 各命令所對應 word 各部件,下圖所示