Python处理文本文件给第四列加200并追加时报错如何解决
报错原因
input.txt中包含>非数值字符,np.loadtxt默认尝试将所有内容转换为浮点型,遇到无法转换的>就会抛出对应错误- 代码中
data(:,3)语法错误,numpy数组索引用方括号,正确写法为data[:, 3]
解决方案
直接逐行读写处理即可完美保留原文件格式,代码如下:
with open('input.txt', 'r', encoding='utf-8') as f_in, open('out.txt', 'w', encoding='utf-8') as f_out: for line in f_in: raw_line = line.rstrip('\n') # 包含>的行直接原样写入输出文件 if '>' in raw_line: f_out.write(raw_line + '\n') continue # 拆分数据列 cols = raw_line.split() if len(cols) >= 4: # 第四列数值加200后追加到行末 col4 = float(cols[3]) new_val = col4 + 200 # 可根据需要调整new_val的格式化宽度匹配原文件对齐 new_line = f"{raw_line} {new_val}\n" f_out.write(new_line)
如果需要严格对齐原文件的列间距,可以调整new_val的格式化规则,比如改为f"{new_val:<20g}"适配固定宽度输出。
可选Numpy实现说明
如果一定要用numpy实现,可通过np.loadtxt('input.txt', comments='>')跳过所有带>的行,但该方法会丢失原文件中>行的位置信息,需要额外记录才能还原原文件结构,复杂度远高于逐行处理,更推荐使用上面的逐行处理方案。
内容的提问来源于stack exchange,提问作者manas
相关产品推荐
相关产品推荐

