我有一个ASCII文件,其中包含多行的月平均海平面记录,格式如下:
1969.0417; 71210;000
1969.1250;-99999;00;000
1969.2083;0;000
.......................
.......................
.......................
1970.1250;-99999;00;000
1970.2083;0;000
1970.2917;0;000
这是一个4列文件,保存时间为年,小数点后4位,海平面为mm,一些值为零。NaN值为-99999
我希望我的代码构建一个时间序列(两列列表),它将保持:i)第一列中的年份值(作为浮点数)和ii)第二列中的海平面值(作为浮点数)。一旦我得到了海平面时间序列作为两列浮点数的数组,我想我可以管理剩下的处理和我需要做的绘图。
我是Python新手,所以我尝试了不同的策略。
如果我必须对一行代码这样做,我会这样做:
t=[]
sl=[]
line =('1969.0417; 7121; 0;000').replace(" ", "")
time = line.split(';')
t = float(time[0])
sl = float(time[1])
但我必须在阅读整个文件时执行此操作,因此:
- 第一步,我打开文件并读取它的行:
path=r“D:....\4Python\1238.rlrdata”,open(path,“r”)作为f:对于f中的行:a = f.readlines()
- 第二步,我尝试分割文件使用作为分隔符“;”
seg = a.split(';')
但我收到了以下信息
属性错误:“list”对象没有属性“split”
- 接下来的步骤包括将“”替换为“”,并将字符串转换为float。
你能给我提个建议吗?
1条答案
按热度按时间ars1skjm1#
毕竟这里是解决方案:
打开文件读取数据
以open(path)为f:data = f.readlines()
初始化一个空数组来保存数据
array = np.zeros((len(data),2))
遍历文件中的行并填充数组
for i,line in enumerate(data):#将行拆分为两部分parts = line.strip().split(';')#将部件转换为浮点数并将其添加到数组array[i,0] = float(parts[0])array[i,1] = float(parts[1])