日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

基于Python實現文本文件轉Excel_python

作者:ZackSock ? 更新時間: 2022-10-07 編程語言

一、前言

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

二、openpyxl模塊

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

1、安裝

安裝只需要執行下面語句即可:

pip?install?openpyxl

然后在代碼中導入工作簿:

from?openpyxl?import?Workbook

這樣我們就可以開始操作了。

2、簡單操作

我們來看一些簡單的操作:

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

這里前面兩步是基本操作,首先創建Workbook對象,然后調用active函數激活。然后我們通過下標的方式給指定坐標的位置添加數據。最后調用save方法保存文件。

三、文本文件轉excel文件

上面的幾個操作就足夠我們今天的操作了,下面我們來看看如何將文本文件轉換成Excel文件。

1、尋找規律

在文章開頭說了,我們只能將有規律的文本文件轉換成Excel,不然沒有太多意義。所以我們第一步就是找規律。比如我們下面這個文件:

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

我們來看一下上面的數據,其中第一行是數據的字段。而后面幾行就是真實數據了。而單個數據的屬性值又由逗號隔開。這種規律非常明顯,很適合我們今天的內容。不管仔細觀察可以看到,逗號有中文的也有英文的,而且有的里面還包含了空格。知道這些后我們在轉換的時候就需要針對性的處理一下了。

2、開始轉換

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

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

經過上面的處理,我們就成功將文本轉換成excel了,下面是結果圖:

excel表格

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

補充

Python對于Excel文件的操作當然不僅僅是可以將文本文件轉為Excel,還可以將PDF轉為Excel,下面是實現代碼,希望對你有所幫助

import pdfplumber
import pandas as pd

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

for page in pdf.pages[17:59]:
 print (page)
 # 獲取當前頁面的全部文本信息,包括表格中的文字
 # 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=[]
#記錄序號==1的行索引,用于后面的表格拆分
for i in range(len(df)):
 if df.ix[i,0]=='1':
  index.append(i)
  print ("################")
index.append(len(df))
#print (index)

#按行索引將內容切片并逐個添加到表中
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') 

原文鏈接:https://mp.weixin.qq.com/s/5_JR_EdMQukBQt9Gm7hsYQ

欄目分類
最近更新