使用python將數(shù)據(jù)寫入excel

由于經(jīng)常需要用到這方面的內(nèi)容,所以要好好記錄一下,省的以后老找了

使用的代碼版本為 Python3

  1. 首先呢输瓜,數(shù)據(jù)是這個(gè)樣子的

V04002 V01000 V04001 V10004 V12001 V11002 V13004 V13003 V13011

1 58015 2014 10203 26 19 49 67 0

2 58015 2014 10212 23 21 59 79 282

3 58015 2014 10149 113 20 86 64 87

4 58015 2014 10112 154 14 135 78 615

5 58015 2014 10040 217 17 167 66 530

6 58015 2014 10003 241 12 238 81 571

7 58015 2014 9999 267 14 287 83 1345

8 58015 2014 10033 244 11 271 89 717

第一行對(duì)應(yīng)的含義是:

'V04002':'月','V01000':'區(qū)站號(hào)','V04001':'年','V14032':'日照時(shí)數(shù)','V10202':'極端最低本站氣壓','V10004':'平均本站氣壓','V12001':'平均氣溫','V11002':'平均風(fēng)速','V10201':'極端最高本站氣壓','V13004':'平均水汽壓','V13003':'平均相對(duì)濕度','V13011':'降水量','V12212':'平均最低氣溫'

我想用Python把它寫入excel中

  1. 用到的知識(shí)

(1)使用字典

使用字典將對(duì)應(yīng)的代號(hào)轉(zhuǎn)換成中文

(2)讀取文件

因?yàn)閿?shù)據(jù)是以txt格式來(lái)進(jìn)行保存的科雳,所以需要用到IO操作來(lái)讀取數(shù)據(jù)辩越。


with open('read.txt','r') as f:

在這里會(huì)用with ... as

因?yàn)槲募?duì)象實(shí)現(xiàn)了上下文管理器協(xié)議矾利,程序進(jìn)入with語(yǔ)句塊時(shí),會(huì)把文件對(duì)象賦值給變量f姑裂,在程序退出 with 語(yǔ)句塊時(shí),會(huì)自動(dòng)調(diào)用close方法

需要注意的是男旗,如果是寫入文件炭分,可以在函數(shù)中指定字符編碼格式

with open('output.txt','w',encoding='utf-8') as f:


with open('output.txt','w',encoding='utf-8') as f:

    contents='愚人之丘'

    f.write(content)

在Python2中可以使用io模塊的open。Python2 io.open()等價(jià)于Python3 open()

from io import open

(3)pandas

我曾經(jīng)用pandas爬去過(guò)網(wǎng)頁(yè)上的表格剑肯,十分好用,看過(guò)介紹观堂,正好在這里也用的上

在dataframe的示例上是這樣寫的


data = {'Country': ['Belgium', 'India', 'Brazil'],

'Capital': ['Brussels', 'New Delhi', 'Brasília'],

'Population': [11190846,1303171035,207847528]}

df = pd.DataFrame(data,

columns=['Country', 'Capital', 'Population'])

我將數(shù)據(jù)轉(zhuǎn)換成這種形式让网,然后使用pandas的to_excel(name,sheet_name=name)將其保存為excel的格式

(4)split(),strip()

split()

通過(guò)指定分隔符對(duì)字符串進(jìn)行切片师痕,如果參數(shù)num 有指定值溃睹,則僅分隔 num 個(gè)子字符串


    str.split(str="",num=string.count(str)).

strip()

用于移除字符串頭尾指定的字符(默認(rèn)為空格)。


#!/usr/bin/python

str="0000000this is string example....wow!!!0000000";

printstr.strip('0');

輸出即為

this is string example....wow!!!

還可以單獨(dú)去除一邊胰坟,也可以使用replace


" xyz ".strip()                    # returns "xyz"

" xyz ".lstrip()                    # returns "xyz "

" xyz ".rstrip()                    # returns " xyz"

" x y z ".replace(' ','')        # returns "xyz"

  1. 代碼

# -*- coding: UTF-8 -*-

import pandas as pd



def toexcel(name):

print('*****************************')

print(name)

print('*****************************')

biaotou={'V04002':'月','V01000':'區(qū)站號(hào)','V04001':'年','V14032':'日照時(shí)數(shù)','V10202':'極端最低本站氣壓','V10004':'平均本站氣壓','V12001':'平均氣溫','V11002':'平均風(fēng)速','V10201':'極端最高本站氣壓','V13004':'平均水汽壓','V13003':'平均相對(duì)濕度','V13011':'降水量','V12212':'平均最低氣溫'}

header=[]                                                #存放轉(zhuǎn)換過(guò)的表頭

data=[]                                                    #存放數(shù)據(jù)

pre=name.split('.')[0]                              #excel文件名稱(小數(shù)點(diǎn)前)

xlsname=(pre+'.xlsx')

with open(name) as file:

    for line in file:

        line=line.strip('\n').strip()                #先去掉換行符\n,再去掉前后的空格

        line=line.split(' ')                            #將每行的數(shù)據(jù)分隔開

        for n in line:

            if n in biaotou.keys():

                header.append(biaotou[n])

            else:

                data.append(line)

                break

df=pd.DataFrame(data,columns=header)

df.to_excel(xlsname,sheet_name=pre)



if __name__ == "__main__":

    name='*****'                #數(shù)據(jù)名稱

    toexcel(name):

  1. 應(yīng)用到多個(gè)文件
    因?yàn)閿?shù)據(jù)文件不只是一個(gè)是有很多個(gè)因篇,要應(yīng)用到很多個(gè),所以同樣要寫個(gè)方法笔横,獲取所有數(shù)據(jù)的文件的名字竞滓,一個(gè)個(gè)的傳給上面的方法,我是通過(guò)用到os.listdir() 和os.getcwd() 吹缔。

os.listdir() 方法用于返回指定的文件夾包含的文件或文件夾的名字的列表商佑。這個(gè)列表以字母順序。 它不包括 '.' 和'..' 即使它在文件夾中厢塘。

os.getcwd() 方法用于返回當(dāng)前工作目錄茶没。

將這兩個(gè)方法一起用就可以獲得當(dāng)前目錄的所有文件的名稱(以后會(huì)改成傳入地址的)

def getname():
  names=[]
  passname=['toexcel.py']              #將不想執(zhí)行的該程序的文件名肌幽,放在這個(gè)中,在              
                                                        這里抓半,這個(gè)是Python代碼的名字
  filenames = os.listdir(os.getcwd())
  for name in filenames:
    if name not in passname:
      names.appends(name)
  return names

將3,4結(jié)合喂急,稍加改動(dòng)就可以將所有數(shù)據(jù)文件寫入到excel中

我知道我的方法比較繁瑣,如果有更好的方法笛求,如果那里有什么錯(cuò)誤廊移,希望可以告知,共同進(jìn)步

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涣易,一起剝皮案震驚了整個(gè)濱河市画机,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌新症,老刑警劉巖步氏,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異徒爹,居然都是意外死亡荚醒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門隆嗅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)界阁,“玉大人,你說(shuō)我怎么就攤上這事胖喳∨萸” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵丽焊,是天一觀的道長(zhǎng)较剃。 經(jīng)常有香客問(wèn)我,道長(zhǎng)技健,這世上最難降的妖魔是什么写穴? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮雌贱,結(jié)果婚禮上啊送,老公的妹妹穿的比我還像新娘。我一直安慰自己欣孤,他們只是感情好馋没,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著导街,像睡著了一般披泪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搬瑰,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天款票,我揣著相機(jī)與錄音控硼,去河邊找鬼。 笑死艾少,一個(gè)胖子當(dāng)著我的面吹牛卡乾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缚够,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼幔妨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了谍椅?” 一聲冷哼從身側(cè)響起误堡,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雏吭,沒(méi)想到半個(gè)月后锁施,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杖们,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年悉抵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摘完。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡姥饰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出孝治,到底是詐尸還是另有隱情列粪,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布谈飒,位于F島的核電站篱竭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏步绸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一吃媒、第九天 我趴在偏房一處隱蔽的房頂上張望瓤介。 院中可真熱鬧,春花似錦赘那、人聲如沸刑桑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)祠斧。三九已至,卻和暖如春拱礁,著一層夾襖步出監(jiān)牢的瞬間琢锋,已是汗流浹背辕漂。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吴超,地道東北人钉嘹。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鲸阻,于是被迫代替她去往敵國(guó)和親跋涣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容