我正在寻找一个更优雅的解决方案来格式化MAC地址与冒号.我使用的是Python 3.2.也许是一种奇特的清单理解?
s=""
h="00233a990c21"
for i in range(0,12,2):
s += h[i:i+2] + ":"
s=s[:-1]
print("s=",s)
Run Code Online (Sandbox Code Playgroud)
Lev*_*sky 13
您的代码很容易转换为理解形式:
':'.join(h[i:i+2] for i in range(0,12,2))
Run Code Online (Sandbox Code Playgroud)
这不是最短的解决方案,但它接受所有常见类型的 mac 格式作为输入。它还进行一些验证检查。
import re
def format_mac(mac: str) -> str:
mac = re.sub('[.:-]', '', mac).lower() # remove delimiters and convert to lower case
mac = ''.join(mac.split()) # remove whitespaces
assert len(mac) == 12 # length should be now exactly 12 (eg. 008041aefd7e)
assert mac.isalnum() # should only contain letters and numbers
# convert mac in canonical form (eg. 00:80:41:ae:fd:7e)
mac = ":".join(["%s" % (mac[i:i+2]) for i in range(0, 12, 2)])
return mac
Run Code Online (Sandbox Code Playgroud)
以下是 mac 地址字符串列表以及它们是否被视为有效或无效:
'008041aefd7e', # valid
'00:80:41:ae:fd:7e', # valid
'00:80:41:AE:FD:7E', # valid
'00:80:41:aE:Fd:7E', # valid
'00-80-41-ae-fd-7e', # valid
'0080.41ae.fd7e', # valid
'00 : 80 : 41 : ae : fd : 7e', # valid
' 00:80:41:ae:fd:7e ', # valid
'00:80:41:ae:fd:7e\n\t', # valid
'aa:00:80:41:ae:fd:7e', # invalid
'0:80:41:ae:fd:7e', # invalid
'ae:fd:7e', # invalid
'$$:80:41:ae:fd:7e', # invalid
Run Code Online (Sandbox Code Playgroud)
所有有效的将以规范形式返回:
'00:80:41:ae:fd:7e'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9185 次 |
| 最近记录: |