处理从文本文件读取的列表时Python中出错

处理从文本文件读取的列表时Python中出错,python,list,split,Python,List,Split,这是我的密码。我是Python的新手: f=open('dt2.txt','r').read().split('\n') for i in range (len(f)): a=f[i].split('\t') print type(a) print str(a[1])," with roll no: ",str(a[0])," ", c=0 d=0 for j in range (0,

这是我的密码。我是Python的新手:

    f=open('dt2.txt','r').read().split('\n')
    for i in range (len(f)):
        a=f[i].split('\t')
        print type(a)
        print str(a[1])," with roll no: ",str(a[0])," ",
        c=0
        d=0
        for j in range (0,100):
            try:
                if str(a[j])=="HU101":
                    c+=1
                if str(a[j])=="HU301":
                    c+=1
                if str(a[j])=="HU481":
                    c+=1
                if str(a[j])=="HU501":
                    c+=1
                if str(a[j])=="HU601":
                    c+=1
                if str(a[j])=="HU781":
                    c+=1
                if str(a[j])=="HU801A":
                    c+=1
                if str(a[j])=="HU801B":
                    c+=1
                if str(a[j])=="M101":
                    d+=1
            except IndexError:
                continue
    if c>d:
        print "is good in Soft Skills"
    else:
        print "is good in Quantitative & Logical Ability"
我得到这个错误:


让我们看看我能不能帮上忙。。。在python的csv库中,使用。。。open被认为更像python。与…有关的。。。“打开”确保文件在打开后正确关闭

import csv
with open('dt2.txt') as f:
    mydata = [i for i in csv.reader(f, delimiter='\t')] # one-liner
另一个提示。。。您还可以通过编写以下内容大幅缩短代码:

if str(a[j]) in ["HU101","HU301",...,"HU801B"]:
   c+=1

坦率地说,这个代码很糟糕。如果我正确理解了您想要实现的目标,那么这是一种更干净的方法:

f = open('dt2.txt','r') 
for line in f:
    a = line.split('\t')
    print "{} with roll no: {} ".format(a[1],a[0]),
    c = sum(1 for j in a if j in set("HU101", "HU301", "HU481", "HU501", "HU601", "HU781", "HU801A", "HU801B"))
    d = 1 if "M101" in a else 0
    if c>d:
        print "is good in Soft Skills"
    else:
        print "is good in Quantitative & Logical Ability"
f.close()

您能给我们看一下您的dt2.txt的示例吗?1您的代码缩进不正确。2你应该发布错误信息,而不是屏幕截图。3尽快?12300110031.0 ABHIPSA KUNDU HU181 XC181 CS291 ME291 CS391 CS392 CS393 M401 HU481 CS492 CS493 CS503 CS591 CS592 CS594B CS594D CS691 CS692 CS681 12300110071.0 ABHISHEK SINGH HU181 CS391 CS392 CS493 CS593 CS681 HU781 CS792 CS891 CS892 ES191 CS291PH291 ES291 ME291 CS393 HU481 MCS491 CS491 CS492 CS591 CS691 CS692 CS693 12300110049.0 ADITI Bhumik XC181 ES291 CS392 CS393 HU481 CS491 CS492 CS493 CS691 CS692 CS681 CS795A CS792 CS794 CS891首先关闭,不要打开'filename.txt','r'。读取.split,只需打开'filename.txt'。读取行。这里的错误是它认为f是一个整数。@NickChapman:我尝试使用a=strf[I].split'\t',但我得到了相同的错误