欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python實(shí)現(xiàn)文本文件轉(zhuǎn)Excel

 更新時(shí)間:2022年08月11日 11:24:49   作者:ZackSock  
Excel文件是我們常用的一種文件,在工作中使用非常頻繁。Excel中有許多強(qiáng)大工具,因此用Excel來(lái)處理文件會(huì)給我們帶來(lái)很多便捷。本文就來(lái)和大家分享一下Python實(shí)現(xiàn)文本文件轉(zhuǎn)Excel的方法,感興趣的可以了解一下

一、前言

Excel文件是我們常用的一種文件,在工作中使用非常頻繁。Excel中有許多強(qiáng)大工具,因此用Excel來(lái)處理文件會(huì)給我們帶來(lái)很多便捷。但是有時(shí)候我們拿到了文件不是Excel文件,而且我們又想用Excel中的工具,這個(gè)時(shí)候我們就可以想辦法把這個(gè)文件轉(zhuǎn)換成Excel文件了。今天我們就來(lái)實(shí)現(xiàn)一下,需要注意我們只能把有規(guī)律的文件轉(zhuǎn)換成Excel,而且今天的內(nèi)容也不是普遍通用的。只提供一種思路。

二、openpyxl模塊

openpyxl模塊是用來(lái)操作Excel文件的一個(gè)模塊,還有很多模塊可以做同樣的事情,這里就不介紹了。

1、安裝

安裝只需要執(zhí)行下面語(yǔ)句即可:

pip?install?openpyxl

然后在代碼中導(dǎo)入工作簿:

from?openpyxl?import?Workbook

這樣我們就可以開(kāi)始操作了。

2、簡(jiǎn)單操作

我們來(lái)看一些簡(jiǎn)單的操作:

from?openpyxl?import?Workbook
#?創(chuàng)建工作簿
wb?=?Workbook()
#?激活
ws?=?wb.active
#?設(shè)置指定格的數(shù)據(jù)
ws['A1']?=?41
#?在下一行添加數(shù)據(jù)
ws.append([1,?2,?3])
#?保存
wb.save("1.xlsx")

這里前面兩步是基本操作,首先創(chuàng)建Workbook對(duì)象,然后調(diào)用active函數(shù)激活。然后我們通過(guò)下標(biāo)的方式給指定坐標(biāo)的位置添加數(shù)據(jù)。最后調(diào)用save方法保存文件。

三、文本文件轉(zhuǎn)excel文件

上面的幾個(gè)操作就足夠我們今天的操作了,下面我們來(lái)看看如何將文本文件轉(zhuǎn)換成Excel文件。

1、尋找規(guī)律

在文章開(kāi)頭說(shuō)了,我們只能將有規(guī)律的文本文件轉(zhuǎn)換成Excel,不然沒(méi)有太多意義。所以我們第一步就是找規(guī)律。比如我們下面這個(gè)文件:

姓名,性別,年齡
zack,男,21
rudy,男,22
alice,女,20
atom,男,?23

我們來(lái)看一下上面的數(shù)據(jù),其中第一行是數(shù)據(jù)的字段。而后面幾行就是真實(shí)數(shù)據(jù)了。而單個(gè)數(shù)據(jù)的屬性值又由逗號(hào)隔開(kāi)。這種規(guī)律非常明顯,很適合我們今天的內(nèi)容。不管仔細(xì)觀察可以看到,逗號(hào)有中文的也有英文的,而且有的里面還包含了空格。知道這些后我們?cè)谵D(zhuǎn)換的時(shí)候就需要針對(duì)性的處理一下了。

2、開(kāi)始轉(zhuǎn)換

首先我們要處理文本,然后再寫入Excel,具體代碼如下:

from?openpyxl?import?Workbook
wb?=?Workbook()
ws?=?wb.active
#?處理文件
with?open("test.txt",?"r",?encoding="utf-8")?as?f:
????#?把逗號(hào)替換成統(tǒng)一的\t
????content?=?f.read().replace(",",?"\t").replace(",",?"\t")
????#?根據(jù)換行拆分內(nèi)容
????lines?=?content.split("\n")
????#?提取標(biāo)題
????titles?=?lines[0].split("\t")
????titles.insert(0,?"")
????#?標(biāo)題寫入excel
????ws.append(titles)
????#?寫入內(nèi)容
????for?i,?line?in?enumerate(lines[1:]):
????????item?=?line.split("\t")
????????item.insert(0,?i)
????????ws.append(item)
wb.save("1.xlsx")

經(jīng)過(guò)上面的處理,我們就成功將文本轉(zhuǎn)換成excel了,下面是結(jié)果圖:

excel表格

效果正是我們想要的,大家可以根據(jù)不同需求不同文件來(lái)修改處理的代碼。

補(bǔ)充

Python對(duì)于Excel文件的操作當(dāng)然不僅僅是可以將文本文件轉(zhuǎn)為Excel,還可以將PDF轉(zhuǎn)為Excel,下面是實(shí)現(xiàn)代碼,希望對(duì)你有所幫助

import pdfplumber
import pandas as pd

path = 'test.pdf'
pdf = pdfplumber.open(path)
i=1
#writer=pd.ExcelWriter('output.xlsx')
df=pd.DataFrame(columns=['序號(hào)','刊名','主辦單位','等級(jí)'])
sheetname=['考古文博','歷史學(xué)','馬克思主義理論','民族學(xué)與文化學(xué)','文學(xué)-外國(guó)文學(xué)','文學(xué)-中國(guó)文學(xué)','藝術(shù)學(xué)','語(yǔ)言學(xué)','哲學(xué)','宗教學(xué)','法學(xué)'
   ,'管理學(xué)','環(huán)境科學(xué)','教育學(xué)','經(jīng)濟(jì)學(xué)-財(cái)政科學(xué)','經(jīng)濟(jì)學(xué)-工業(yè)經(jīng)濟(jì)','經(jīng)濟(jì)學(xué)-金融','經(jīng)濟(jì)學(xué)-經(jīng)濟(jì)管理','經(jīng)濟(jì)學(xué)-經(jīng)濟(jì)綜合','經(jīng)濟(jì)學(xué)-貿(mào)易經(jīng)濟(jì)'
   ,'經(jīng)濟(jì)學(xué)-農(nóng)業(yè)經(jīng)濟(jì)','經(jīng)濟(jì)學(xué)-世界經(jīng)濟(jì)','人文地理學(xué)','社會(huì)學(xué)','體育學(xué)','統(tǒng)計(jì)學(xué)','圖書館情報(bào)與檔案學(xué)','心理學(xué)','新聞學(xué)與傳播學(xué)'
   ,'政治學(xué)-國(guó)際政治','政治學(xué)-中國(guó)政治','綜合-高校綜合性學(xué)報(bào)','綜合-綜合性人文社科期刊']
   
##由于存在一個(gè)表格跨頁(yè)的情況,先將所有表格存放在一個(gè)DataFrame中,再根據(jù)序號(hào)拆分。

for page in pdf.pages[17:59]:
 print (page)
 # 獲取當(dāng)前頁(yè)面的全部文本信息,包括表格中的文字
 # print(page.extract_text())
 for table in page.extract_tables():
  #print(table)
  df=df.append(pd.DataFrame(table[1:],columns=table[0]),ignore_index=True)
print (df)

writer=pd.ExcelWriter('output3.xlsx')
new_df=pd.DataFrame()
j=1
index=[]
#記錄序號(hào)==1的行索引,用于后面的表格拆分
for i in range(len(df)):
 if df.ix[i,0]=='1':
  index.append(i)
  print ("################")
index.append(len(df))
#print (index)

#按行索引將內(nèi)容切片并逐個(gè)添加到表中
for t in range(len(index)-1):
 new_df=df.ix[index[t]:index[t+1]-1,:]
 #print (new_df)
 new_df.to_excel(writer,sheet_name=sheetname[t],encoding='gb2312',index=None)
writer.save()
pdf.close()
print('finished') 

到此這篇關(guān)于基于Python實(shí)現(xiàn)文本文件轉(zhuǎn)Excel的文章就介紹到這了,更多相關(guān)Python文本文件轉(zhuǎn)Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論