我如何遍历此列表以获得正确的答案?

时间:2019-03-29 04:54:15

标签: python list loops csv

我正在尝试遍历列表以获取结果列表,但第一个输出不正确。我的代码在下面列出

with open(csvpath, newline='') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=',')
    csv_header = next(csvreader)
    total = 0
    for row in csvreader:
        #print(csvreader)
        total = int(row[1]) -total

我跳过第一行,因为它包含标题。我基本上应该从(单元格b1)867884中减去(单元格B2)984655。但是由于我使用的是循环,所以total中的第一个值是867884或(单元格B2-0)。

我也不能按照教练的指示使用熊猫。

我搜索了互联网和书籍,以找到正确的方法来找到答案,但没有成功。

结果应该是(单元格B1)867884减去(单元格b2)984655。但是由于我使用的是循环,total中的第一个值是867884或(单元格B2-0)。

2 个答案:

答案 0 :(得分:0)

您的行total = int(row[1]) -total毫无意义,因为您在任何时候都只使用一列(row [1]部分)。这并不是事实,即使使用循环,您也可以执行以下操作:

with open(csvpath, newline='') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=',')
    csv_header = next(csvreader)
    for row in csvreader:
        print(int(row[0]) - int(row[1])) # use indexes to specify which column you need

我将把它留给您,以找到只获得B行的最佳方法;)

答案 1 :(得分:0)

我想我用这段代码可以帮助您。我粘贴了一个变量“ last”,该变量将先前的迭代置于for循环之外,并在循环运行后分配它。这个问题并不干净,但希望您可以解决这个问题。

with open('convertcsv.csv', newline='') as csvfile:
csvreader = csv.reader(csvfile, delimiter=',')
# csv_header = next(csvreader)
cvsfile = csvreader
last = 0
for value in csvreader:
    b1 = int(value[1])
    b2 = last
    if last == 0:
        next
        total = b1 - b2
        print(total)
        last = int(value[1])