Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 13, 2011 15:03:37

keizer08
От:
Зарегистрирован: 2011-09-13
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

вложенные циклы for... ошибка интерпритатора?

Всем доброго времени суток!
python 2.7.2
Вот проблема:

import csv
db1 = csv.reader(open(r'D:\1.cvs','rb'),delimiter = ',',quotechar = '"',lineterminator = '\r\n')
db2 = csv.reader(open(r'D:\2.cvs','rb'),delimiter = ',',quotechar = '"',lineterminator = '\r\n')
tempstr = ''
outtxt = open(r'D:\out.txt','w')
S = 0
ls1 = []


for row1 in db1:
S = 0
for row2 in db2:
if row1[2] == row2[2]:
tempstr = row1[9]+' '+row1[3]+' '+row1[2]+' = '+row2[2]+' '+row2[3]+' '+row2[9]
outtxt.write(tempstr)
S = 1
if S == 0:
tempstr = row1[9]+row1[3]+row1[2]
ls1.append(tempstr)

outtxt.close()
или…

import csv
db1 = csv.reader(open(r'D:\1.cvs','rb'),delimiter = ',',quotechar = '"',lineterminator = '\r\n')
db2 = csv.reader(open(r'D:\2.cvs','rb'),delimiter = ',',quotechar = '"',lineterminator = '\r\n')


for row1 in db1:
print row1[2]
for row2 in db2:
print row1[2],row2[2]
В обоих случаях вложенный цикл отрабатывает только 1 раз…

Вывод из примера номер 2:
000000001 О00000001
000000001 О00000002
000000001 О00000003
000000001 О00000004
бла... бла...
000000001 О00002628
000000001 О00002629
000000002
000000003
бла... бла...
000000929
000000930
Просьба сильно не пинать… я новичек.

Прикладываю CVSы



Отредактировано (Сен. 13, 2011 15:14:41)

Офлайн

#2 Сен. 13, 2011 15:12:58

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

вложенные циклы for... ошибка интерпритатора?

csv.reader возвращает итератор. Если совсем коротко то циклом по нему только раз и можно пройтись.
Можно получив итератор сразу сделать список -

db2= list(csv.reader(...))
должно заработать.



Офлайн

#3 Сен. 13, 2011 15:16:48

keizer08
От:
Зарегистрирован: 2011-09-13
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

вложенные циклы for... ошибка интерпритатора?

Аааааа!!! действитльно! спасибо огромное pill)))) просветил)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version