簡體   English   中英

Python:從主機名拆分域名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM