Найдите строку в файле с помощью комбинации цикла for и if

Я новичок в python, и мне не удалось получить свой цикл и условие, работающее в этом случае, как показано ниже.

Я ищу сервер, переданный в аргументе (хост), если он найден, вернет строку в столбце 16, если нет: не найден. В моем коде он возвращается не в цикле, я просто хочу только один раз.

Я тоже пробовал с одним перерывом, но безуспешно.

Спасибо за вашу помощь.

with open('file', 'r') as f:
    for line in f:
        parts = line.split('`')
        if host in line:
          model = parts[16]
          print("You have selected this server model: " + host + " " + model)
        else:
          print("not founded")

Как выглядит file? Кстати, индексирование Python начинается с нуля, так что, возможно, вам нужен parts[15]

U11-Forward 10.09.2018 09:16

не зная, как выглядит файл, мы мало чем можем помочь. Единственное, что я могу сказать, это то, что parts = line.split('`') имеет больше смысла внутри if host in line:.

Ma0 10.09.2018 09:16

Также очень нужен желаемый результат

U11-Forward 10.09.2018 09:17

вы пробовали установить break в if и установить цикл else not found?

mastisa 10.09.2018 09:18
0
4
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны печатать 'not found' только после завершения цикла, не найдя совпадения, и вы должны break цикла, как только вы найдете совпадение. Для этого можно использовать конструкцию for-else:

with open('file', 'r') as f:
    for line in f:
        parts = line.split('`')
        if host in line:
            model = parts[16]
            print("You have selected this server model: " + host + " " + model)
            break
    else:
        print("not found")

Спасибо, это помогло, я подумал, что мне нужно закрыть, чтобы оставить остальное под петлей.

Yann 10.09.2018 09:22

Другие вопросы по теме