比较CSV文件中的数据

jvlzgdj9  于 2022-12-06  发布在  其他
关注(0)|答案(3)|浏览(141)

我是Python的新手,所以对我宽容点!
我只是试图比较两个列表中的值,并以yesno的形式得到它们的输出。
图示为CSV文件,该文件将值存储在:

我的代码如下所示:

import csv

f = open("datatest.csv")
reader = csv.reader(f)

dataListed = [row for row in reader]

rc = csv.writer(f)  

column1 = []
for row in dataListed:
    column1.append(row[0])
    
column2 = []
for row in dataListed:
    column2.append(row[1])

for row in dataListed:
    if (column1) > (column2):
        print ("yes,")
    else:
        print("no,")

当前,输出只是no, no, no, no, no ...,而根据值它不应该是这样!
我将在下面展示我所尝试的,任何帮助都将是巨大的。

ecr0jaav

ecr0jaav1#

for row in dataListed:
    if (column1) > (column2):
        print ("yes,")
    else:
        print("no,")

这个循环每次都比较相同的column1column2变量,这些变量永远不会改变。
代码并没有神奇地知道column1column2实际上意味着“当前行的第一列”和“当前行的第二列”。
你的意思大概是这样的:

if row[0] > row[1]:

......因为这实际上在每次循环迭代中都使用row的当前值。

pexxcrt2

pexxcrt22#

您可以简化代码并获得预期的结果,如下所示:

import csv
from pathlib import Path

dataset = Path('dataset.csv')

with dataset.open() as f:
    reader = csv.reader(f)
    headers = next(reader)

    for col1, col2 in reader:
        print(col1, col2, 'yes' if int(col1) > int(col2) else 'no', sep=',')

对于您在图像中发布的示例CSV,输出如下:

1,5,no
7,12,no
11,6,yes
89,100,no
99,87,yes
qnakjoqk

qnakjoqk3#

在这里你可以得到一个简单的替代方案为您的程序

f=open("sample.csv")

for each in f:
    header=""
    row=each.split(",")[enter image description here][1]
    try:
        column1=int(row[0])
        column2=int(row[1])
        if column1>column2:
            print(f"{column1}\t{column2}\tYes")
        else:
            print(f"{column1}\t{column2}\tNo")
    except:
        header=each.split(",")
        head=f"{header[0]}\t{header[1].strip()}\tresult"
        print(head)
        print((len(head)+5)*"-")
        pass

相关问题