Python:读取包含原始记录的文件并从中构建海平面时间序列

qfe3c7zg  于 2023-04-13  发布在  Python
关注(0)|答案(1)|浏览(93)

我有一个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。

你能给我提个建议吗?

ars1skjm

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])

相关问题