如何将值与csv文件中的值进行比较?

时间:2018-08-26 18:02:54

标签: python

我有一个csv文件,格式为:

text, class
text0,class0
text1,class1
..., ...

我导入文件,然后通过以下方式将列放入列表中

textt=data['text']
classs=data['class']

然后我运行一个脚本,将每个文本分为两类。

for i in textt:
    #classify text
    text_class=#guessed_text_class

我想将text_class与每一行的类进行比较,然后执行:

if text_class==class:
    print('correct')

编辑:例如: csv文件如下所示:

text, class
'I hate Billy', 'Joe'
'I love Joe', 'Joe'
'I love Billy', 'Billy'

文件导入:

with open('csv_file', 'rU') as infile:
reader=csv.DictReader(infile)
data={}
for row in reader:
    for header, value in row.items():
        try:
            data[header].append(value)
        except KeyError:
            data[header]=[value]

textt = data ['Text'] classes = data ['Class']

“文本”列中的每个句子都进行了分类:

for i in textt:
    #classifies text
    text_class=#guessed text class

我尝试查找text_class是否正确是

for i in range(len(textt))
    if i=text_class:
        print('correct')

但是,这结束了将列表中的最后一个类别项目(在本例中为“ Billy”)与类别项目进行比较。因此最终看起来像:

猜测的类将是:     '乔'     '乔'     “比利”

但不进行比较:

'Joe'=='Joe'
'Joe'=='Joe'
'Billy'=='Billy'

它将进行比较:

'Billy'=='Joe'
'Billy'=='Joe'
'Billy'=='Billy'

3 个答案:

答案 0 :(得分:1)

如果使用enumerate函数,则假设两个列表中的顺序相同,则可以在同一迭代中检查结果。

for counter,i in enumerate(textt):
    #classify text
    text_class=#guessed_text_class
    if text_class == classs[counter]:
        print('correct')

答案 1 :(得分:1)

假设列表的长度相同,并且顺序正确,那么您可以简单地运行从0length-1的循环,并比较您的类。

for i in range(len(classs)):
    if text_class == classs[i]:
        print("yes")

在您的情况下,我假设您想猜测该类,然后在同一循环中进行比较。因此,您可以使用以下实现。

for i in range(len(classs)): # or len(textt). Since, I assume both would be same
    text_class = guess(textt[i])
    if text_class == classs[i]:
        print("yes")

答案 2 :(得分:1)

这是您要完成的意思吗?

for txt, cls in zip(textt, classs):
     if txt==cls: 
        print('correct')