Python开发票务系统读取CSV文件列输出异常如何解决
你当前输出行列反转的核心原因是:代码逻辑把每一列的所有值分别汇总到了name_l/age_l/sex_l三个独立列表,打印时直接把整个列列表拼接成一行输出,自然就变成了一行展示所有姓名、一行展示所有年龄的情况,和预期的每行展示一条完整票务记录的要求不符。
修复方案
方案1(推荐,无冗余存储)
直接缓存整行记录,不需要拆分到不同的列列表,打印时逐行输出即可:
import sys, select, os, csv from os import system with open(input("\nInput file name with .csv extension: "), 'r', newline = '') as f: fileDir = os.path.dirname(os.path.realpath('__file__')) reader = csv.reader(f, delimiter = '\t') header_row = next(reader) total_tickets = 0 rows = [] for row in reader: rows.append(row) total_tickets += 1 # 打印表头 print('\t'.join(header_row)) # 逐行打印每条记录 for row in rows: print('\t'.join(row)) print("\nTotal Tickets: ", total_tickets)
方案2(保留原列缓存逻辑)
如果你的业务后续需要对姓名、年龄、性别列分别做统计处理,可以在原有代码基础上仅修改打印逻辑,按行索引拼接对应字段:
# 原有读取列的逻辑保持不变,仅替换打印部分代码 print('\t'.join(header_row)) for i in range(total_tickets): print(f"{name_l[i]}\t{age_l[i]}\t{sex_l[i]}") print("\nTotal Tickets: ", total_tickets)
内容的提问来源于stack exchange,提问作者Prophet4050
相关产品推荐
相关产品推荐

