Python文件处理脚本输出None,请求错误排查与需求实现指导
问题分析与修复方案
输出全为None的核心原因
你大概率是错误打印了csv.writer.writerow()的返回值(这个方法本身返回None),或者没有正确处理行数据就输出了默认值。
符合需求的修正代码
以下是结合csv和fileinput模块的正确实现,满足你的所有需求:
import csv import fileinput import sys # 读取输入文件(制表符分隔),输出到标准输出(支持重定向) reader = csv.reader(fileinput.input(), delimiter='\t') writer = csv.writer(sys.stdout, delimiter='\t') # 定义缺失列的补全值 fill_values = ['AA:NA', 'BB:NA', 'CC:NA'] for row in reader: # 跳过仅含1个条目的行 if len(row) <= 1: continue # 补全到3列:现有字段取前3个,不足的用对应位置的补全值填充 processed_row = row[:3] + fill_values[len(row):3] # 写入处理后的行(writerow无返回值,不要打印它) writer.writerow(processed_row)
关键细节说明
- 用
csv模块处理制表符分隔数据,避免手动分割字符串时的边界问题(比如字段含特殊字符) - 直接通过
sys.stdout输出,支持你原来的重定向命令python3 into_data.py file.txt > output.txt - 补全逻辑:原行有2列时,自动补第3列的
CC:NA;原行有1列时直接跳过(符合剔除要求) - 不要打印
writer.writerow()的结果,这个方法没有返回内容,打印它就会输出None
内容的提问来源于stack exchange,提问作者zzz
相关产品推荐
相关产品推荐

