You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用csv.DictReader处理空格分隔数据异常:输出单个字符原因排查

问题原因分析

你遇到的问题核心在于**csv.DictReader的第一个参数传错了类型**:

  • csv.DictReader要求第一个参数是按行迭代的对象(比如打开的文件句柄、每行字符串组成的列表),但你传入的' '.join(ios_r.stdout.split())是一个完整的长字符串。
  • 字符串本身属于可迭代对象,迭代时会逐个返回每个字符,所以遍历ios_e.reader时,会把整个字符串拆成单个字符输出。
修正方案

你需要先把命令输出按行拆分,再处理每行的多空格为单空格,最后将处理后的行列表传给csv.DictReader。同时注意fieldnames要用有序列表(集合是无序的,会导致字段对应混乱),代码示例如下:

# 按行拆分命令输出,逐行处理多空格为单空格
processed_lines = [' '.join(line.split()) for line in ios_r.stdout.splitlines()]
# 用处理后的行列表初始化DictReader,fieldnames用列表保证顺序
ios_e = csv.DictReader(processed_lines, delimiter=' ', fieldnames=['Device', 'tps', 'kB_read/s' ,'kB_wrtn/s', 'kB_dscd/s', 'kB_read', 'kB_wrtn', 'kB_dscd'])

内容的提问来源于stack exchange,提问作者Rusteme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:30:57