Я пишу скрипт Python3.x для соответствия определенному тексту в большом CSV-файле. Я очень близок к тому, что ищу, но по какой-то причине я получаю ложный результат. Ниже мой код:DictReader находит совпадение в csv, но получает ложный положительный
from csv import DictReader
def cluster_lookup():
cluster = input("What cluster are you looking for? ")
while True:
try:
with open('hypervisor.csv') as csvfile:
reader = DictReader(csvfile)
for col in reader:
if col['cluster_name'] == cluster:
print(', '.join([col['host_name'], col['ip']]))
continue
except IOError as err:
print('Could not locate the csv file.', err)
break
else:
if col['cluster_name'] is not cluster:
print('The cluster cannot be found.')
break
Ожидаемый результат:
What cluster are you looking for? cluster 15
server150, 192.x.x.x
server151, 192.x.x.x
server152, 192.x.x.x
server153, 192.x.x.x
server154, 192.x.x.x
server155, 192.x.x.x
server156, 192.x.x.x
server157, 192.x.x.x
server158, 192.x.x.x
server159, 192.x.x.x
Вместо этого он найти кластер я ищу, но и возвращает The cluster cannot be found
Предложение еще будет вызываться всякий раз, когда исключение не генерируется. В этот момент col будет содержать последний элемент из считывателя. Если последний элемент не соответствует, выводится сообщение об ошибке. Лучшим методом было бы установить флаг True в условии if col [] -, а затем проверить флаг в предложении else. –