使用python将数据写入excel

由于经常需要用到这方面的内容,所以要好好记录一下,省的以后老找了

使用的代码版本为 Python3

  1. 首先呢,数据是这个样子的

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

第一行对应的含义是:

'V04002':'月','V01000':'区站号','V04001':'年','V14032':'日照时数','V10202':'极端最低本站气压','V10004':'平均本站气压','V12001':'平均气温','V11002':'平均风速','V10201':'极端最高本站气压','V13004':'平均水汽压','V13003':'平均相对湿度','V13011':'降水量','V12212':'平均最低气温'

我想用Python把它写入excel中

  1. 用到的知识

(1)使用字典

使用字典将对应的代号转换成中文

(2)读取文件

因为数据是以txt格式来进行保存的,所以需要用到IO操作来读取数据。


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

在这里会用with ... as

因为文件对象实现了上下文管理器协议,程序进入with语句块时,会把文件对象赋值给变量f,在程序退出 with 语句块时,会自动调用close方法

需要注意的是,如果是写入文件,可以在函数中指定字符编码格式

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()等价于Python3 open()

from io import open

(3)pandas

我曾经用pandas爬去过网页上的表格,十分好用,看过介绍,正好在这里也用的上

在dataframe的示例上是这样写的


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

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

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

df = pd.DataFrame(data,

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

我将数据转换成这种形式,然后使用pandas的to_excel(name,sheet_name=name)将其保存为excel的格式

(4)split(),strip()

split()

通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串


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

strip()

用于移除字符串头尾指定的字符(默认为空格)。


#!/usr/bin/python

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

printstr.strip('0');

输出即为

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

还可以单独去除一边,也可以使用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':'区站号','V04001':'年','V14032':'日照时数','V10202':'极端最低本站气压','V10004':'平均本站气压','V12001':'平均气温','V11002':'平均风速','V10201':'极端最高本站气压','V13004':'平均水汽压','V13003':'平均相对湿度','V13011':'降水量','V12212':'平均最低气温'}

header=[]                                                #存放转换过的表头

data=[]                                                    #存放数据

pre=name.split('.')[0]                              #excel文件名称(小数点前)

xlsname=(pre+'.xlsx')

with open(name) as file:

    for line in file:

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

        line=line.split(' ')                            #将每行的数据分隔开

        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='*****'                #数据名称

    toexcel(name):

  1. 应用到多个文件
    因为数据文件不只是一个是有很多个,要应用到很多个,所以同样要写个方法,获取所有数据的文件的名字,一个个的传给上面的方法,我是通过用到os.listdir() 和os.getcwd() 。

os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 '.' 和'..' 即使它在文件夹中。

os.getcwd() 方法用于返回当前工作目录。

将这两个方法一起用就可以获得当前目录的所有文件的名称(以后会改成传入地址的)

def getname():
  names=[]
  passname=['toexcel.py']              #将不想执行的该程序的文件名,放在这个中,在              
                                                        这里,这个是Python代码的名字
  filenames = os.listdir(os.getcwd())
  for name in filenames:
    if name not in passname:
      names.appends(name)
  return names

将3,4结合,稍加改动就可以将所有数据文件写入到excel中

我知道我的方法比较繁琐,如果有更好的方法,如果那里有什么错误,希望可以告知,共同进步

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容