Python读取海平面原始记录文件并构建时间序列的方法求助
解决方法
你遇到的AttributeError: 'list' object has no attribute 'split'错误,大概率是直接对readlines()返回的行列表调用了split()方法——但split()是字符串专属方法,列表不能直接用它,得逐行处理每个字符串才行。
下面是适合新手的完整可运行代码,每一步都加了注释:
import math # 初始化存储时间序列的空列表 sea_level_data = [] # 打开文件(替换成你的实际文件路径) with open('sea_level_records.txt', 'r') as f: # 逐行读取文件内容 for line in f: # 去除每行首尾的空白字符(比如换行符、多余空格) cleaned_line = line.strip() # 跳过空行,避免处理无效数据 if not cleaned_line: continue # 按分号分割每行数据,得到各列的字符串列表 columns = cleaned_line.split(';') # 提取第一列,转成浮点型年份(strip()去掉列前后的空格) year = float(columns[0].strip()) # 提取第二列,转成浮点型海平面值 level = float(columns[1].strip()) # 把标记为缺失值的-99999替换成Python标准的NaN if level == -99999: level = math.nan # 将这组数据添加到结果列表 sea_level_data.append([year, level]) # 打印前5条数据验证结果 print(sea_level_data[:5])
关键细节说明:
- 用
with open(...)语句会自动关闭文件,不用手动写f.close(),更安全省心 - 分割前必须用
strip()处理每行和每个列的空白,不然你的数据里分号前后的空格会导致转浮点报错 - 跳过空行能避免因文件末尾或中间的空行引发的索引错误
math.nan是Python官方认可的缺失值表示,后续如果用 pandas 做数据分析也能直接兼容
内容的提问来源于stack exchange,提问作者Yiannis
相关产品推荐
相关产品推荐

