【问题标题】:How to evaluate rows in a csv file python如何评估csv文件python中的行
【发布时间】:2025-01-02 03:30:02
【问题描述】:

我有这个代码:

import csv

def main():
    file1 = open("filepath", "r")  
    reader = csv.reader(file1)
    i = next(reader)
    for row in file1:
        if i[3] < i[4]:
            print("troubling")

        elif i[3] < i[5]:
            print("concerning")
        else:
            print("None")

main()

到目前为止,所做的是将我的列拆分,以便我可以将它们相互比较,但是现在它正在比较整个列,而不是每一行,我怎样才能让它做每一行而不是比较两整列。现在第 4 列的值最大,因此它打印“麻烦”100 次,我希望它仅在某行的第 4 列大于同一行的第 3 列时打印“麻烦”。提前感谢您的帮助。

【问题讨论】:

  • 你为什么不用for row in reader:

标签: python csv


【解决方案1】:

遍历阅读器对象更简单。请尝试以下操作:

import csv
def main():
    file1=open("filepath","r")
    reader=csv.reader(file1)
    for row in reader:
        if row[3]<row[4]:
            print ("troubling")
        #... and so on 

阅读器中的每一行都是一个列表,因此您可以使用适当的索引访问每一列。

【讨论】:

    【解决方案2】:

    我认为错误是由于您在循环中使用了变量“i”而不是行。 'i' 的值在循环内不会改变,因此每次都会得到相同的结果。

    for row in file1:
        if row[3] < row[4]:
            print("troubling")
        elif row[3] < row[5]:
            print("concerning")
        else:
            print("None")
    

    我相信这应该可以解决您的问题。

    【讨论】:

    • 非常感谢,这解决了我的问题。非常感谢您的帮助。
    • 很高兴我能帮上忙。您能否投票并选择我的答案作为接受。干杯!
    • 这不会按预期工作 - for row in file1 将逐行循环文件的内容。结果row[3] 将作为字符数组访问该行 - 这里没有进行 CSV 解析。
    • 我认为应该可以。我以前使用过 csv 包,这就是我一直在进行逐行阅读的方式。 docs.python.org/2/library/csv.html#csv.reader
    最近更新 更多