Чтение из CSV в Python неоднократно? - PullRequest
21 голосов
/ 19 мая 2010

Я пытаюсь проверить значение извлеченных данных по сравнению с CSV, который у меня уже есть. Он будет проходить по строкам CSV только один раз, я могу проверить только одно значение feed.items (). Есть ли значение, которое мне нужно где-то сбросить? Есть ли лучший / более эффективный способ сделать это? Спасибо.

orig = csv.reader(open("googlel.csv", "rb"), delimiter = ';')
goodrows = []
for feed in gotfeeds:    
   for link,comments in feed.items():
       for row in orig:
           print link
           if link in row[1]:
               row.append(comments)
               goodrows.append(row)

Ответы [ 2 ]

35 голосов
/ 19 мая 2010

Вы можете «сбросить» итератор CSV, сбросив позицию чтения файлового объекта.

data = open("googlel.csv", "rb")
orig = csv.reader(data, delimiter = ';')
goodrows = []
for feed in gotfeeds:    
   for link,comments in feed.items():
       data.seek(0)
       for row in orig:
           print link
           if link in row[1]:
               row.append(comments)
               goodrows.append(row)
10 голосов
/ 19 мая 2010

Создание orig списка исключает необходимость сброса / повторного анализа csv:

orig = list(csv.reader(open("googlel.csv", "rb"), delimiter = ';'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...