[英]Python: Split domain name from host name
我有一個主機名列表,如下所示:
testhost.my.domain.net
host2.domain.net
host3.domain.name.org
基本上,域名可以有 2 或 3 個部分。
我需要將主機名(testhost、host2、host3)與域名(my.domain.net、domain.net 和 domain.name.org)分開存儲在一個表中,這就是為什么我要拆分名稱.
這是我到目前為止的代碼,但是它不起作用,因為拆分的長度可能很大。
hostname = "practice-host.my.link.com"
split = hostname.split(".")
hostname = split[0]
domain = split[1] + "." + split[2] + "." + split[3]
print (hostname, domain)
我想做這樣的事情,
for i = 1, i < len(split):
domain += split[i] + "."
i += 1
但這當然行不通。 有人可以提供一個關於如何實現我需要的pythonic想法嗎?
split
采用第二個參數maxsplit
,您可以將其設置為1
:
domains = [
"testhost.my.domain.net",
"host2.domain.net",
"host3.domain.name.org"
]
split_domains = [d.split(".", 1) for d in domains]
這會給你:
[
['testhost', 'my.domain.net'],
['host2', 'domain.net'],
['host3', 'domain.name.org']
]
這就是我認為你正在尋找的。
你有
name = 'testhost.my.domain.net'
split = name.split('.')
您可以將主機作為第一個元素:
host = split[0]
域可以與split
的逆合並,即join
:
domain = '.'.join(split[1:])
另一種方法是僅在第一次出現.
:
host, domain = name.split('.', 1)
這個版本可以說更干凈,但對缺少名稱元素的魯棒性較差。
hostname = "www.qq1.com"
domain_name = ".".join(hostname.rsplit(".",2)[-2:])
我想這就是你要問的嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.