Найти - Пользователи
Полная версия: вложенные циклы for... ошибка интерпритатора?
Начало » Python для новичков » вложенные циклы for... ошибка интерпритатора?
1
keizer08
Всем доброго времени суток!
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ы
pill
csv.reader возвращает итератор. Если совсем коротко то циклом по нему только раз и можно пройтись.
Можно получив итератор сразу сделать список -
db2= list(csv.reader(...))
должно заработать.
keizer08
Аааааа!!! действитльно! спасибо огромное pill)))) просветил)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB