使用dictReader从CSV文件打印标题

时间:2019-04-15 14:23:20

标签: python python-3.x dictionary

我在Python方面还很陌生,最近才开始研究它。我在阅读讲师为课程提供的csv文件的标题部分时遇到问题。

我正在尝试使用dictReader函数确定最高元素编号,并打印具有最高元素编号的头像。对于Aang来说,他最高的元素是“空气”,而Gyatso的最高元素是“水”,但是我只能打印出它们的最高值。我知道dictReader的运行方式是for循环只能跳过标题,逐行遍历csv文件。

.csv文件:

[data.csv

我的代码:

print("{0:<12}|{1:>12}".format("Avatar Name", "Top Element"))
import csv
filePath = "data.csv"
with open(filePath) as csvfile:
        reader  = csv.DictReader(csvfile)
        element_air = 'Air'
        element_water = 'Water'
        element_earth = 'Earth'
        element_fire = 'Fire'
        for row in reader:
                 max_element = max(int(row['Air']),int(row['Water']),int(row['Earth']),int(row['Fire']))
                 if(max_element == row['Air']):
                      max_element = str(row[4])
                 if(max_element == row['Water']):
                      max_element = str(row[5])
                 if(max_element == row['Earth']):
                      max_element = str(row[6])
                 if(max_element == row['Fire']):
                      max_element = str(row[7])
        print("{0:<12}|{1:^5}".format(row['name'], max_element))
print("==============================================")

我试图将max_element转换为字符串,但仍会打印出相同的结果。 row [4],row [5]等是我试图将此max元素分配给的标头。

如果max元素与最大值匹配,我什至尝试分配max_element == element_air ..... element_fire,以便它将打印最大值的字符串。

预期结果: expected

实际结果:

actual

1 个答案:

答案 0 :(得分:0)

您无需在每个if语句中重新分配max_element,只需将这个元素打印出来

elements = ('Air', 'Water', 'Fire', 'Earth')
for row in reader:
    max_element = max(row[elem] for elem in elements)
    for element in elements:
        if row[element] == max_element:
            print("{0:<12}|{1:^5}".format(row['name'], element))
            break