Цикл For не выполняет итерацию по массиву - PullRequest
0 голосов
/ 23 мая 2019

Когда я запускаю свой код, только первый элемент в массиве «listWP» проверяет, находится ли он в «dataGA». Перепробовал кучу вещей, такая же проблема. Новичок в коде извинения за невежество

import csv

f_GA = open('MS_GA.csv', 'rt')
f_WP = open('MS_WP.csv', 'rt')
dataGA = csv.reader(f_GA, delimiter=',') 
dataWP = csv.reader(f_WP, delimiter=',')
listWP = []
for row in dataWP:
    for i in row:
        b = i[29:]
        listWP.append(b)
for url in listWP:
    for row in dataGA:
        for i in row:
            if url in i:
                print (i + " ||is top site")

Текущий вывод - это первый элемент массива listWP, проверенный через dataGA, мне бы хотелось, чтобы это были все элементы

1 Ответ

0 голосов
/ 23 мая 2019

csv.reader() возвращает генератор. В первый раз, когда вы выполняете его, вы обрабатываете все элементы. Все последующие времена ничего не получают, так как больше нет элементов для перебора. Вы должны преобразовать его в список.

dataGA = list(csv.reader(f_GA, delimiter = ','))

Однако, вероятно, было бы лучше, если бы вы перепроектировали свои структуры данных. Вместо всех этих вложенных циклов преобразуйте содержимое dataGA в set, а затем просто используйте if url in url_set:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...