如何读取文本文件时忽略每行最后时间列并执行FFT处理?
读取文本文件时忽略最后一列时间数据的Python实现
问题描述
我有一个需要读取并执行FFT处理的文本文件,文件内容格式大致如下:
1458 1499 1232 1232 1888 ... 2022-09-11 09:32:51.076 1459 1323 1999 1323 1823 ... 2022-09-11 09:32:51.199
每行包含200列,我希望读取每行时忽略最后一列的时间数据。目前我尝试了以下Python代码:
with open('file') as f: w, h = [int(x) for x in next(f).split()] # read first line array = [] for line in f: # read rest of lines array.append([int(x) for x in line.split()])
但不知道如何移除每行的最后一列,请求技术帮助。
解决方案
你可以通过Python的切片操作直接去掉每行分割后的最后一个元素,具体修改如下:
基础修改版本
with open('file') as f: # 若第一行格式和后续行一致(也带时间列),则此处同样需要加[:-1] w, h = [int(x) for x in next(f).split()] array = [] for line in f: # 分割后取除最后一列外的所有元素,再转换为整数 row_data = line.split()[:-1] array.append([int(x) for x in row_data])
代码说明
line.split()会将每行按空格拆分为字符串列表,[:-1]是切片语法,表示取列表中从第一个元素到倒数第二个元素的所有内容,刚好剔除最后一列的时间字符串。- 如果你的第一行也包含时间列(和后续行格式完全一致),需要同步修改第一行的处理逻辑:
w, h = [int(x) for x in next(f).split()[:-1]]
简洁优化写法(列表推导式)
如果想让代码更紧凑,可以用列表推导式替换循环:
with open('file') as f: w, h = [int(x) for x in next(f).split()] array = [[int(x) for x in line.split()[:-1]] for line in f]
内容的提问来源于stack exchange,提问作者swapnil
相关产品推荐
相关产品推荐

