簡體   English   中英

如何在Python中將列表與實際字符串進行比較?

[英]How to compare list with actual string in Python?

我試圖在Python中獲取我的計算機的hostname 我可以使用socket獲取主機名。 現在,我需要將此hostnamecolo list進行比較,並查看該hostname是否屬於哪個datacenter 它來自dc1或dc2或dc3。

#!/usr/bin/python

colo = ['dc1', 'dc2', 'dc3']

hostname = socket.gethostname()

如何檢查該主機名是否來自哪個colo,然后將其打印出來?

示例主機名將如下所示-

dc1dbx1145.dc1.host.com
dc1dbx1146.dc1.host.com
dc1dbx1147.dc1.host.com
dc1dbx1148.dc1.host.com

拆分. 並測試第二個值:

location = hostname.split('.')[1]

演示:

>>> hostname = 'dc1dbx1145.dc1.host.com'
>>> hostname.split('.')[1]
'dc1'

您可能想通過以下方法驗證找到的名稱確實是可識別的位置:

if location not in colo:
   print 'Not a recognized location'

如果您不知道位置可能是哪一部分,請使用:

location = next((part for part in hostname.split('.') if part in colo), None)
if location is None:
    print 'Not a recognized location'

如果您的主機名是一致的並且始終使用此格式,則可以嘗試如下操作:

data = hostname.split('.')
if len(data) == 4 and data[1] in colo:
     print "Datacenter: %s" % data[1]
else:
     print "Unknown hostname" 

if在獲取主機名時遇到錯誤,則if語句只是為了避免出現異常。

您可以使用以下代碼段:

colo = ['dc1', 'dc2', 'dc3']
hostname = socket.gethostname()
term= hostname.split('.')[1]
print filter(lambda x: term in x,colo)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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