设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 8920|回复: 3
打印 上一主题 下一主题

[新人求助]如何高效读取txt文件中的不规则数据

[复制链接]

2

主题

0

好友

40

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2017-6-22 08:10:00 |只看该作者 |正序浏览
各位老铁,新人请教问题:如何高效读取复杂格式txt文件?
说明:txt中以实型数组为主,但有必要的字符串信息,且每行格式不固定,请问该怎么高效读取。
本人小白,之前常用两种入门操做:1、先readlines,再切片resahpe。2、用numpy的genfromtxt。附图为txt文件内容,求老司机带路。
如图:polygon后的数字代表行数xxx,之后的xxx行为一组数据,然后会出现polygo  yyy,之后yyy行为另一组数据,一次类推。
这数据数据表示流域的位置。每条流域都有若干个位置点来描述,且有顺序,每个位置点都有2个要素,即经纬度。我的一个文件里有若干条河流。那么请问应该用什么数据结构比较好呢?

原文件有点大,25M,传不了


微信截图_20170620110614.png (14.74 KB, 下载次数: 354)

数据格式

数据格式

我在Corssin编程教室20班群组,QQ:1006535320
回复

使用道具 举报

2

主题

0

好友

40

积分

新手上路

Rank: 1

板凳
发表于 2017-6-23 10:08:53 |只看该作者
crossin先生 发表于 2017-6-22 23:49
不用readlines一次读进内存,可以readline逐行读取处理。

数据结构就用列表,列表每一项是一个经纬度坐标 ...

谢谢C先生在微信和论坛的悉心指导,目前已经初步实现,有待优化。
  1. # -*- coding: utf-8 -*-
  2. import numpy as np
  3. f = file('.\\scream_area.txt','r')

  4. data = f.readlines()

  5. line= len(data)                     #遍历参数
  6. n=0
  7. i=0
  8. fin=[]                              #最终大列表数据结构
  9. for i in range(line):               #逐行识别PLOYGON
  10.          

  11.          data_1=data[i]
  12.          polygon=str(data_1.split()[0])
  13.          
  14.          if polygon=='POLYGON' :
  15.                   num_points= int(data_1.split()[1])
  16.                   liuyu = data[i+1:i+1+num_points]
  17.                   fin.append(liuyu)
  18.                   

  19.                   n=n+1
  20. #                  print num_points
  21.                   
  22. #                  print np.shape(liuyu)


  23. #print fin[756]
  24. f.close()


  25. print n
复制代码
我在Corssin编程教室20班群组,QQ:1006535320
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2017-6-22 23:49:21 |只看该作者
不用readlines一次读进内存,可以readline逐行读取处理。

数据结构就用列表,列表每一项是一个经纬度坐标组成的元组
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-23 09:20 , Processed in 0.015403 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部