爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10853|回复: 8

[经验总结] python批处理txt文件

[复制链接]

新浪微博达人勋

发表于 2018-4-22 20:40:46 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 mockings 于 2018-4-28 18:53 编辑

接触python不久,之前使用的是nc数据文件,最近师兄给了青藏高原71个站点近55年的台站txt数据文件,想要读取,有参考论坛里和网上各位前辈的代码,但是一直不能正确将每列的数据分割出来保存在数组里。
目的:数据的格式是:年、月、日、平均温度、最高、最低,我想分别提取最高和最低温度储存入不同的数组当中方便调用计算

遇到的问题:1、我使用readlines的方法后,保存的格式是list,并且只是一维数组,显示的是txt文件中一整行的数据,并不能分开调用
                   2、使用.split(" ")针对空格分隔符,但是只是显示的方式改变,仍然是一整行的数据,只是每个数据前都多了一个字母t,并且数据间以斜杠区分开。
                   3、我并不明确知道txt文件内数据的行数,只知道1961-2014,其中包括闰年,我不太清楚如何存储后方便对日数据处理





主要参考的是 平流层的萝卜 的http://bbs.06climate.com/forum.p ... 6334&extra=page%3D1,主要是卡在了如何分别读取每一行的数据上,
  1. list=os.listdir('e://data//temp')
  2. filename=[]
  3. for element in list:
  4.     if element.find('txt')!=-1:
  5.         filename.append(element)

  6. tmin=[];tmax=[]
  7. for name in filename:
  8.     f=open('e://data//temp//'+name,'r')
  9.     #print (f)
  10.     val=[]
  11.     content=f.readlines()
  12.     #print (len(content))  #每个txt文件内数据量19723
  13.     for ii in np.arange(len(content)):#开始逐行读取数据
  14.         val.append(。。。。?)
复制代码


谢谢各位前辈帮助!



问题以解决,后来仔细看了平流层的萝卜 发的帖子,发现自己还是没有看清每一条语句的意思
  1. for name in filename:
  2.     f=open('e://data//temp//'+name,'r')
  3.     #print (f)
  4.     val=[];t=[];tmax=[];tmin=[]
  5.    
  6.     content=f.readlines()
  7.     #print (len(content))  #每个txt文件内数据量19723
  8.     for ii in np.arange(len(content)):  #开始逐行读取数据
  9.     <b>val=content[ii].split()         ############分割数据!!!!###############</b>
  10.      #强制将数据改为float格式防止后面出错
  11.     t.append(float(val[3]))
  12.     tmax.append(float(val[4]))
  13.     tmin.append(float(val[5]))
  14.    
复制代码




密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-23 01:09:56 | 显示全部楼层
试试用numpy或者pandas读txt
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-23 09:42:24 | 显示全部楼层
qqqin 发表于 2018-4-23 01:09
试试用numpy或者pandas读txt

嗯,numpy我用的是np.readlines()  ,pandas也有过尝试,但是不太清楚有什么具体的使用方法可以指定列读取数据。。。
请问可以详细一点么,谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-23 11:32:59 | 显示全部楼层
mockings 发表于 2018-4-23 09:42
嗯,numpy我用的是np.readlines()  ,pandas也有过尝试,但是不太清楚有什么具体的使用方法可以指定列读 ...

np.loadtxt(),或者pd.read_table(),具体参数可能得根据你文件里的内容去设定,
然后就可以通过各种方式索引了.
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-26 08:04:01 | 显示全部楼层
txt文件里面形式能发张小截图么,最高,最低,平均温度都是在一个txt里?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-26 19:21:22 | 显示全部楼层
daidanqiong 发表于 2018-4-26 08:04
txt文件里面形式能发张小截图么,最高,最低,平均温度都是在一个txt里?

嗯哼,问题已经解决了,谢谢了
最后  用了.split()分割后取了指定列
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-27 09:48:41 | 显示全部楼层
学习一下,多谢分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-28 08:55:25 | 显示全部楼层
放出代码来学习一下啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-5-3 12:57:44 | 显示全部楼层
感谢楼主的分享,很有用的代码
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表