2015-04-07 3 views
0

Первый код получает меня, что я хочу, но не второй код, я не в состоянии понять разницу между этими двумя«DictReader» не subscriptable

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“ объект не subscriptable»

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']) 
+1

Я думаю, это потому, что я использовал dr вместо строки в строка добавления –

ответ

1

с быстрым взглядом, похоже, что вы должны изменить dir['SC_CODE'] и т.д., чтобы row['SC_CODE'], иначе вы итерацию над объектом DictReader задаром.

0

нашел проблему, вот скорректированный код. Я должен был использовать квадратный и квадратный кронштейн типа 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'])`