更新旧Python代码-CSV读取&;打印程序

更新旧Python代码-CSV读取&;打印程序,python,python-3.x,csv,Python,Python 3.x,Csv,我正在尝试更新一些代码。我正在学习Python3,想知道是否可以用字典或元组做得更好?代码查看csv文件并打印出值。我正在尝试更新代码,使其更简单、更健壮(如果可能的话) 使用样本数据如下: 品牌、型号、年份、颜色、发动机尺寸、最高转速、变速箱 宝马,X62018,黑色,4L,240,手动 我知道DictReader将使用顶行作为列名,我希望遍历每一行并将值打印到屏幕上。您不需要每列有一个字典:您只需要解析中的行的列表/dict(每一行都是dict)。这段代码以“行号”作为键将行存储在dict中

我正在尝试更新一些代码。我正在学习Python3,想知道是否可以用字典或元组做得更好?代码查看csv文件并打印出值。我正在尝试更新代码,使其更简单、更健壮(如果可能的话)

使用样本数据如下:

品牌、型号、年份、颜色、发动机尺寸、最高转速、变速箱
宝马,X62018,黑色,4L,240,手动


我知道DictReader将使用顶行作为列名,我希望遍历每一行并将值打印到屏幕上。

您不需要每列有一个字典:您只需要解析中的
行的
列表/dict
(每一行都是dict)。这段代码以“行号”作为键将行存储在dict中(它从不将这个数字用于任何事情,因此您可以简单地使用列表)

创建解调数据:

# use a sample piece of data as:
with open("csv_test.csv","w") as f:
    f.write("""brand,model,year,colour,engine_size,top_speed,transmission
bmw,X6,2018,black,4L,240,manual
bmw,X7,2019,green,4L,240,manual
bmw,X8,2020,yellow,4L,240,manual
""")
import csv

data = {}
with open("csv_test.csv", 'r') as csvFile:
    reader = csv.DictReader(csvFile)
    for num,row in enumerate(reader):  # num gives you the row number if you really need it
        data[num] = row  # put the line of your file into dict, row number is key

print(data)

# print data "nicely" 
for d in data:
    # get the maximum lenght for your keys to allow a nice formatting
    max_key = max(len(i) for k in data for i in data[k]) 
    for k in data[d]:
        # format the key to max length so data is aligned
        print(f"{k:{max_key}}\t{data[d][k]}")
    print()
# print data in lines
for d in data:
    print(*data[d].values(), sep="\t")
加载/打印数据:

# use a sample piece of data as:
with open("csv_test.csv","w") as f:
    f.write("""brand,model,year,colour,engine_size,top_speed,transmission
bmw,X6,2018,black,4L,240,manual
bmw,X7,2019,green,4L,240,manual
bmw,X8,2020,yellow,4L,240,manual
""")
import csv

data = {}
with open("csv_test.csv", 'r') as csvFile:
    reader = csv.DictReader(csvFile)
    for num,row in enumerate(reader):  # num gives you the row number if you really need it
        data[num] = row  # put the line of your file into dict, row number is key

print(data)

# print data "nicely" 
for d in data:
    # get the maximum lenght for your keys to allow a nice formatting
    max_key = max(len(i) for k in data for i in data[k]) 
    for k in data[d]:
        # format the key to max length so data is aligned
        print(f"{k:{max_key}}\t{data[d][k]}")
    print()
# print data in lines
for d in data:
    print(*data[d].values(), sep="\t")
输出:

如果您只想将数据排成行,请使用:

# use a sample piece of data as:
with open("csv_test.csv","w") as f:
    f.write("""brand,model,year,colour,engine_size,top_speed,transmission
bmw,X6,2018,black,4L,240,manual
bmw,X7,2019,green,4L,240,manual
bmw,X8,2020,yellow,4L,240,manual
""")
import csv

data = {}
with open("csv_test.csv", 'r') as csvFile:
    reader = csv.DictReader(csvFile)
    for num,row in enumerate(reader):  # num gives you the row number if you really need it
        data[num] = row  # put the line of your file into dict, row number is key

print(data)

# print data "nicely" 
for d in data:
    # get the maximum lenght for your keys to allow a nice formatting
    max_key = max(len(i) for k in data for i in data[k]) 
    for k in data[d]:
        # format the key to max length so data is aligned
        print(f"{k:{max_key}}\t{data[d][k]}")
    print()
# print data in lines
for d in data:
    print(*data[d].values(), sep="\t")
输出:

相关的:


您不需要每列一本词典:您只需要解析中的
行的
列表/dict
(每行都是dict)。这段代码以“行号”作为键将行存储在dict中(它从不将这个数字用于任何事情,因此您可以简单地使用列表)

创建解调数据:

# use a sample piece of data as:
with open("csv_test.csv","w") as f:
    f.write("""brand,model,year,colour,engine_size,top_speed,transmission
bmw,X6,2018,black,4L,240,manual
bmw,X7,2019,green,4L,240,manual
bmw,X8,2020,yellow,4L,240,manual
""")
import csv

data = {}
with open("csv_test.csv", 'r') as csvFile:
    reader = csv.DictReader(csvFile)
    for num,row in enumerate(reader):  # num gives you the row number if you really need it
        data[num] = row  # put the line of your file into dict, row number is key

print(data)

# print data "nicely" 
for d in data:
    # get the maximum lenght for your keys to allow a nice formatting
    max_key = max(len(i) for k in data for i in data[k]) 
    for k in data[d]:
        # format the key to max length so data is aligned
        print(f"{k:{max_key}}\t{data[d][k]}")
    print()
# print data in lines
for d in data:
    print(*data[d].values(), sep="\t")
加载/打印数据:

# use a sample piece of data as:
with open("csv_test.csv","w") as f:
    f.write("""brand,model,year,colour,engine_size,top_speed,transmission
bmw,X6,2018,black,4L,240,manual
bmw,X7,2019,green,4L,240,manual
bmw,X8,2020,yellow,4L,240,manual
""")
import csv

data = {}
with open("csv_test.csv", 'r') as csvFile:
    reader = csv.DictReader(csvFile)
    for num,row in enumerate(reader):  # num gives you the row number if you really need it
        data[num] = row  # put the line of your file into dict, row number is key

print(data)

# print data "nicely" 
for d in data:
    # get the maximum lenght for your keys to allow a nice formatting
    max_key = max(len(i) for k in data for i in data[k]) 
    for k in data[d]:
        # format the key to max length so data is aligned
        print(f"{k:{max_key}}\t{data[d][k]}")
    print()
# print data in lines
for d in data:
    print(*data[d].values(), sep="\t")
输出:

如果您只想将数据排成行,请使用:

# use a sample piece of data as:
with open("csv_test.csv","w") as f:
    f.write("""brand,model,year,colour,engine_size,top_speed,transmission
bmw,X6,2018,black,4L,240,manual
bmw,X7,2019,green,4L,240,manual
bmw,X8,2020,yellow,4L,240,manual
""")
import csv

data = {}
with open("csv_test.csv", 'r') as csvFile:
    reader = csv.DictReader(csvFile)
    for num,row in enumerate(reader):  # num gives you the row number if you really need it
        data[num] = row  # put the line of your file into dict, row number is key

print(data)

# print data "nicely" 
for d in data:
    # get the maximum lenght for your keys to allow a nice formatting
    max_key = max(len(i) for k in data for i in data[k]) 
    for k in data[d]:
        # format the key to max length so data is aligned
        print(f"{k:{max_key}}\t{data[d][k]}")
    print()
# print data in lines
for d in data:
    print(*data[d].values(), sep="\t")
输出:

相关的:


如果您只需要这些行,为什么需要这么多词典?对于简单地打印值a
print(*row)
就足够了……嘿,帕特里克,我想问的是,这是最好的还是最简单的方法,还是有更简单的方法?打印时,我想展示宝马X6 2018黑色4L 240手册,这可能不是最好的方式,因为您没有打印任何内容。但希望你知道如何打印?如果你只需要行,为什么你会想要这么多字典?对于简单地打印值a
print(*row)
就足够了……嘿,帕特里克,我想问的是,这是最好的还是最简单的方法,还是有更简单的方法?打印时,我想展示宝马X6 2018黑色4L 240手册,这可能不是最好的方式,因为您没有打印任何内容。但希望你知道怎么打印?