更新旧Python代码-CSV读取&;打印程序
我正在尝试更新一些代码。我正在学习Python3,想知道是否可以用字典或元组做得更好?代码查看csv文件并打印出值。我正在尝试更新代码,使其更简单、更健壮(如果可能的话) 使用样本数据如下: 品牌、型号、年份、颜色、发动机尺寸、最高转速、变速箱更新旧Python代码-CSV读取&;打印程序,python,python-3.x,csv,Python,Python 3.x,Csv,我正在尝试更新一些代码。我正在学习Python3,想知道是否可以用字典或元组做得更好?代码查看csv文件并打印出值。我正在尝试更新代码,使其更简单、更健壮(如果可能的话) 使用样本数据如下: 品牌、型号、年份、颜色、发动机尺寸、最高转速、变速箱 宝马,X62018,黑色,4L,240,手动 我知道DictReader将使用顶行作为列名,我希望遍历每一行并将值打印到屏幕上。您不需要每列有一个字典:您只需要解析中的行的列表/dict(每一行都是dict)。这段代码以“行号”作为键将行存储在dict中
宝马,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")
输出:
相关的:
如果您只需要这些行,为什么需要这么多词典?对于简单地打印值aprint(*row)
就足够了……嘿,帕特里克,我想问的是,这是最好的还是最简单的方法,还是有更简单的方法?打印时,我想展示宝马X6 2018黑色4L 240手册,这可能不是最好的方式,因为您没有打印任何内容。但希望你知道如何打印?如果你只需要行,为什么你会想要这么多字典?对于简单地打印值aprint(*row)
就足够了……嘿,帕特里克,我想问的是,这是最好的还是最简单的方法,还是有更简单的方法?打印时,我想展示宝马X6 2018黑色4L 240手册,这可能不是最好的方式,因为您没有打印任何内容。但希望你知道怎么打印?