第一个代码得到了我想要的东西,但第二个代码没有,我无法理解这两个之间的区别
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'])`