Python raw_input с принудительным TLD?

Я работаю над программой, которая проверяет имена хостов определенных сайтов, и я хочу убедиться, что при запросе имени хоста (с raw_input) оно заканчивается на TLD (.com, .net, .org). Я не совсем уверен, как это сделать в Python.

В Баше у меня есть:

local TLD=(com info org net)    
for entry in ${TLD[@]}; do
   blah blah    
done

Что эквивалентно в Python?


person Community    schedule 29.05.2013    source источник
comment
(Отредактировано для некоторого форматирования.)   -  person Geoff    schedule 29.05.2013


Ответы (1)


endswith(suffix[, start[, end]]) сделает свое дело. Документация

Также обратите внимание, что суффикс может быть кортежем суффиксов!

TLD = ('.com', '.info', '.org', '.net')
if raw_input("Please enter a hostname").endswith(TLD):
    # blah blah
person jaynp    schedule 29.05.2013
comment
+1. Хороший ответ. Однако ему, вероятно, придется спасти raw_input. - person Geoff; 29.05.2013
comment
Вы также можете рассмотреть возможность использования .lower().endswith(TLD) для использования ЗАГЛАВНЫХ РЕГИСТРОВ. - person Geoff; 29.05.2013
comment
Джефф прав, я действительно хочу сохранить raw_input. Я попытался сделать это со списком tmpvar, но я продолжаю получать неверные условия. Каков наилучший способ зафиксировать этот ввод, если он не соответствует TLD, запросить еще раз, в противном случае, когда ввод правильный, продолжить работу с программой? Я попытался сделать цикл while True: со списком для переменной, но не могу разорвать цикл. - person ; 29.05.2013
comment
@Jacob Что вы имеете в виду под сломанными условными выражениями? Вы также хотите сохранить все несовпадающие входные данные TLD? - person jaynp; 30.05.2013
comment
@ user1850672 Я задал второстепенный вопрос и получил ответ :) stackoverflow.com/questions/16822171/ - person ; 30.05.2013