Как Вы разделили бы доменное имя, которое возвратит имя и расширение
domain = 'subdomain.domain.ext'
name, ext = domain.split('.')[-2:]
В зависимости от вашего приложения, будьте осторожны, просто выполняя часть, следующую за последней '.'. Это отлично работает для .com, .net, .org и т. Д., Но, скорее всего, не удастся сделать для многих TLD County Code . Например. bit.ly или google.co.uk .
(Под этим я подразумеваю «bit.ly», вероятно, предпочитают, чтобы его идентифицировали , включая TLD .ly, тогда как Google, вероятно, не хочет, чтобы его идентифицировали с поддельным .co остаток. Насколько это важно, очевидно, будет зависеть от того, что вы делаете).
В тех сложных случаях ... что ж, я подозреваю, у вас много работы!
Надежный ответ, вероятно, будет зависеть от того, как вы собираете / храните свои домены и что вы действительно хотите вернуть в качестве «имени».
Например, если у вас есть набор доменных имен без информации о субдомене, вы можете сделать противоположное тому, что было предложено выше, и просто убрать первую часть:
>>> "stackoverflow.com".split('.')[0]
'stackoverflow'
Вы имеете в виду имя интернет-домена, например www.stackoverflow.com? Если да, то просто используйте:
>>> 'www.stackoverflow.com'.rsplit('.', 1)
['www.stackoverflow', 'com']
В общем, нелегко определить, где заканчивается бит регистрации пользователя и начинается бит реестра. Например: a.com, b.co.uk, c.us, d.ca.us, e.uk.com, f.pvt.k12.wy.us ...
Хорошие люди в Mozilla имеют проект, посвященный перечислению суффиксов доменов, под которыми публика может регистрировать домены: http://publicsuffix.org/
Думаю, вам будет интересен модуль urlparse
: http://docs.python.org/library/urlparse.html
Если вы всегда хотите получить последнюю часть доменного имени, вы можете:
subdomain, _, domain= fqdn.rpartition('.')