你的問題事實上包含幾部分:
將 PDF 轉化為帶數純文本格式蠢肆首
抽取其中部分內容
格式化寫雹帆入到 excel 中
轉換 PDF 有很多庫可以完成,如下是通過 pdfminer 的示例:
from cStringIO import StringIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
def convert_pdf_2_text(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
device = TextConverter(rsrcmgr, retstr, codec='utf-8', laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr, device)
with open(path, 'rb') as fp:
for page in PDFPage.get_pages(fp, set()):
interpreter.process_page(page)
text = retstr.getvalue()
device.close()
retstr.close()
return text
需要指出的是,pdfminer 不但可以將 PDF 轉換為 text 文本,還可以轉換為 HTML 等帶有標簽的文本。上面只是最簡單的示例,如果每頁有很獨特的標志,你還可以按頁單獨處理。
Ⅱ python如何讀取word文件中的文本內容並寫入到新的txt文件
Ⅲ python如何讀取word文件中的文本內容並寫入到新的txt文件
#確保安裝了察唯python-docx包
from docx import Document as Doc
docu=Doc(input('path:'))
file=''
for i in docu.paragraphs:
----file+=i.text
f=open(input('new path:'),'w',encoding='utf-8')
f.write(file)
f.close()
#減號的位橘沒純置圓咐是縮進
Ⅳ python怎樣讀取pdf文件的內容
1,引言
晚上翻看《Python網路數據採集》這本書,看到讀取PDF內容的代碼,想起來前幾天集搜客剛剛發布了一個抓取網頁pdf內容的抓取規則,這個規則能夠把pdf內容當成html來做網頁抓取。神奇之處要歸功於Firefox解析PDF的能力,能夠把pdf格式轉換成html標簽,比如,div之類的標簽,從而用GooSeeker網頁抓取軟體像抓普通網頁一樣抓取結構化內容。
從而產生了一個問題:用Python爬蟲的話,能做到什麼程度。下面將講述一個實驗過程和源代碼。
2,把pdf轉換成文本的Python源代碼
下面的python源代碼,讀取pdf文件內容(互聯網上的或是本地的),轉換成文本,列印出來。這段代碼主要用了一個第三方庫PDFMiner3K把PDF讀成字元串,然後用StringIO轉換成文件對象。(源代碼下載地址參看文章末尾的GitHub源)
復制代碼
from urllib.request import urlopen
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO
from io import open
def readPDF(pdfFile):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, laparams=laparams)
process_pdf(rsrcmgr, device, pdfFile)
device.close()
content = retstr.getvalue()
retstr.close()
return content
pdfFile = urlopen("http://pythonscraping.com/pages/warandpeace/chapter1.pdf")
outputString = readPDF(pdfFile)
print(outputString)
pdfFile.close()
復制代碼
如果PDF文件在你的電腦里,那就把urlopen返回的對象pdfFile替換成普通的open()文件對象。
3,展望
這個實驗只是把pdf轉換成了文本,但是沒有像開頭所說的轉換成html標簽,那麼在Python編程環境下是否有這個能力,留待今後探索。
4,集搜客GooSeeker開源代碼下載源
1. GooSeeker開源Python網路爬蟲GitHub源
5,文檔修改歷史
2016-05-26:V2.0,增補文字說明
2016-05-29:V2.1,增加第六章:源代碼下載源,並更換github源的網址
Ⅳ 如何利用Python抓取PDF中的某些內容
可以轉換成TXT再抓取
fromcStringIOimportStringIO
frompdfminer.pdfinterp
importPDFResourceManager,PDFPageInterpreter
frompdfminer.converterimportTextConverter
frompdfminer..pdfpage
importPDFPage
defconvert_pdf_2_text(path):
rsrcmgr=PDFResourceManager()
retstr=StringIO()
device=TextConverter(rsrcmgr,retstr,codec='utf-8',laparams=LAParams())
interpreter=PDFPageInterpreter(rsrcmgr,device)
withopen(path,'rb')asfp:
forpageinPDFPage.get_pages(fp,set()):
interpreter.process_page(page)
text=retstr.getvalue()
device.close()
retstr.close()
returntext
Ⅵ python讀取文件—txt文件常用讀寫操作
f = open("data.txt","r") #設置文件對象
f.close() #關閉文件
為了方便,避免忘記close掉這個文件對象,可以用下面這種方式替代
with open('data.txt',"r") as f: #設置文件對象
str = f.read() #可以是隨便對文件的操作
f = open("data.txt","r") #設置文件對象
str = f.read() #將txt文件的所有內容讀入到字元串str中
f.close() #將文件關閉
f = open("data.txt","r") #設置文件對象
line = f.readline()
line = line[:-1]
while line: #直到讀取完文件
line = f.readline() #讀取一行文件,包括換行符
line = line[:-1] #去掉換行符,也可以不去
f.close() #關閉文件
data = []
for line in open("data.txt","r"): #設置文件對象並讀取每一行文件
data.append(line) #將每一行文件加入到list中
f = open("data.txt","r") #設置文件對象
data = f.readlines() #直接將文件中按行讀到list里,效果與方法2一樣
f.close() #關閉文件
可以使用pandas的.read_csv,讀取文件的時候可以給每一列起名字,通過列名來調取相應列的數據。
import pandas as pd
data = pd.read_csv(" OSDO1012.txt",sep=',',header=None, names=['lat','lon','time','z']
使用data.lat就可以讀取名為lat這一列的數據
data = np.loadtxt("data.txt",skiprows = 1) #將文件中數據載入到data數組里,並且跳過第一行
with open('data.txt','w') as f: #設置文件對象
f.write(str) #將字元串寫入文件中
data = ['a','b','c']
單層列表寫入文件
with open("data.txt","w") as f:
f.writelines(data)
每一項用空格隔開,一個列表是一行寫入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f: #設置文件對象
for i in data: #對於雙層列表中的數據
i = str(i).strip('[').strip(']').replace(',','').replace('\'','')+'\n' #將其中每一個列表規范化成字元串
f.write(i) #寫入文件
直接將每一項都寫入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f: #設置文件對象
for i in data: #對於雙層列表中的數據
f.writelines(i) #寫入文件
np.savetxt("data.txt",data) #將數組中數據寫入到data.txt文件
np.save("data.txt",data) #將數組中數據寫入到data.txt文件
Ⅶ python中有什麼包可以吧pdf文件轉換為txt文件
## {{{ http://code.activestate.com/recipes/577095/ (r1)
import sys
import pyPdf
def getPDFContent(path):
content = ""
# Load PDF into pyPDF
pdf = pyPdf.PdfFileReader(file(path, "rb"))
# Iterate pages
for I in range(0, pdf.getNumPages()):
# Extract text from page and add to content
content += pdf.getPage(i).extractText() + "擾明和緩盯 \n"
# Collapse whitespace
content = u" ".join(content.replace(u"\xa0", u" ").strip().split())
return content
f = open(sys.argv[1]+'.txt','w+'槐悔)
f.write(getPDFContent(sys.argv[1]))
f.close()
#print getPDFContent(sys.argv[1]).encode("ascii", "xmlcharrefreplace")
## end of http://code.activestate.com/recipes/577095/ }}}
Ⅷ python文件讀取與寫入
open(filepath) :打開文件
open(filepath,'r') :打開方式,默認是讀取
open(filepath).read() :讀取文件中的內容
open(filepath).readline() :讀取文件中一行的內容
open(filepath).readline()[1] :讀取文件中的內容,返回值是列表。
open(filepath).close() :關閉文件
open(filepath).seek(0) :將游標回到首位
with open()函數,不用close()方法,默認自動關閉,所以需要制定一些規則.
文件內建函數和方法:
open() : 打開文件
read() :輸入
readline() :輸入一行
seek() :文件內移動
write() :輸出
close() :關閉文件
Ⅸ python怎樣讀取pdf文件的內容
可以先把pdf轉成txt再讀取,使用轉換工升笑具就行了
推薦一款免費的在線轉換工具給你:轉轉大師戚帆pdf轉換器
網路搜索進入網站後,到電子書轉換裡面選擇轉成txt,在線轉換後再使用就行了高笑雹
Ⅹ 如何使用python來獲取pdf文件里的文字,最好是不能亂碼
提取pdf文字可以推薦一個工具
第一種文字型PDF比較簡單,可以採用格式轉換的方式直接轉換PDF文件為文本。打開PDF文字識別軟體,執行「文件」-「打開圖像...」導入PDF文件,然後執行「輸出」-「PDF文件轉換為TXT文件」第二種圖像型PDF,有的PDF都是掃描圖片,這個就不能復制文字了,可以採用OCR識別的方式,將PDF文件轉換為可編輯文檔。這也是本文主要講的pdf文字識別方法。還是打開PDF文字提取軟體,執行「文件」-「打開圖像...」導入PDF文件。然後執行「識別」-「開始識別...」。