'DictReader'对象不可下标



第一个代码得到了我想要的东西,但第二个代码没有,我无法理解这两个之间的区别

for f in files:
    filename = (f[-10:-4])
    with open(f, 'r') as file:
        dr = csv.DictReader(file)
        to_db = [(filename,i['SC_CODE'],i['SC_NAME'],i['SC_GROUP'],i['SC_TYPE'],
        i['OPEN'],i['HIGH'],i['LOW'],i['CLOSE'],i['LAST'],
        i['PREVCLOSE'],i['NO_TRADES'],i['NO_OF_SHRS'],i['NET_TURNOV'],i['TDCLOINDI']
        ) for i in dr]

以下代码抛出一个错误"‘DictReader’对象不可下标"

x = []
for f in files:
    filename = (f[-10:-4])
    with open(f, 'r') as file:
        dr = csv.DictReader(file)
        for row in dr:
            x.append(str(filename),dr['SC_CODE'],dr['SC_NAME'],dr['SC_GROUP'],dr['SC_TYPE'],dr['OPEN'],dr['HIGH'],dr['LOW'],dr['CLOSE'],dr['LAST'],dr['PREVCLOSE'],dr['NO_TRADES'],dr['NO_OF_SHRS'],dr['NET_TURNOV'],dr['TDCLOINDI'])

快速浏览一下,您似乎应该将dir['SC_CODE']等更改为row['SC_CODE'],否则您将对DictReader对象进行免费迭代。

发现问题,以下是更正后的代码。我应该使用像x.append([….])这样的行和平方括号,而不是x.append(….)

for f in files:
    filename = (f[-10:-4])
    with open(f, 'r') as file:
        dr = csv.DictReader(file)
        for row in dr:
            x.append([filename,row['SC_CODE'],row['SC_NAME'],row['SC_GROUP'],row['SC_TYPE'],row['OPEN'],row['HIGH'],row['LOW'],row['CLOSE'],row['LAST'],row['PREVCLOSE'],row['NO_TRADES'],row['NO_OF_SHRS'],row['NET_TURNOV'],row['TDCLOINDI']])
            print (row['SC_CODE'])`

最新更新