首页 > 解决方案 > 读取 csv 文件中的列但输出错误

问题描述

我正在尝试在 python 中构建一个票务系统,输出应该逐列读取文件。但是程序误读了这些列。任何帮助将不胜感激。谢谢

这是预期的输出:

Name Age Sex
as   12  f
qw   13  m

Total Tickets:  2

这是当前的输出:

Name    Age     Sex
as      qw
12      13
f       m

Total Tickets:  2

我正在尝试创建并写入 csv 文件,然后从中读取。但是,如上面的输出所示,我得到了与所需输出相反的结果

代码如下:

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)
    
    # Can use the 2 lines below to check indices of headers
    # name = [0], age = [1], sex = [2]
    # for index, column_header in enumerate(header_row):
    #   print(index, column_header)

    name_l = []
    age_l = []
    sex_l = []

    total_tickets = 0

    for row in reader:
        name = str(row[0])
        name_l.append(name)
        age = str(row[1])
        age_l.append(age)
        sex = str(row[2])
        sex_l.append(sex)
        total_tickets += 1

print('\t'.join(header_row))
print('\t'.join(name_l))
print('\t'.join(age_l))
print('\t'.join(sex_l))
print("\nTotal Tickets: ", total_tickets)

标签: pythoncsvfilefile-io

解决方案


好的,设法为自己弄清楚。所以新的代码如下:

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)
    print('\t'.join(header_row))
    # Can use the 2 lines below to check indices of headers
    # name = [0], age = [1], sex = [2]
    # for index, column_header in enumerate(header_row):
    #   print(index, column_header)

    name_l = []
    age_l = []
    sex_l = []

    total_tickets = 0
    
    for row in reader:
        name = str(row[0])
        name_l.append(name)
        age = str(row[1])
        age_l.append(age)
        sex = str(row[2])
        sex_l.append(sex)
        total_tickets += 1

        print('\t'.join(row))
        
    print("\nTotal Tickets: ", total_tickets)

推荐阅读