如何将列表中的字符串转换为大写标准MAC地址格式?
如何将点分隔的MAC地址转换为冒号分隔的大写格式?
给定列表:
list1 = [ '000c.29e6.8fa5', 'fa16.3e9f.0c8c', 'fa16.3e70.323b' ]
需求是将其中的MAC地址转换为00:0C:29:E6:8F:A5这样的冒号分隔大写格式。
你当前代码里的[::1]没有分割作用——它是Python切片语法,步长为1意味着原样返回整个字符串,这一步可以直接去掉。接下来只需要在清理后的字符串基础上,按每两个字符分组再用冒号连接即可。
方法一:基于现有代码修改
直接在你已有的清理步骤后,添加分组和连接逻辑:
list1 = [ '000c.29e6.8fa5', 'fa16.3e9f.0c8c', 'fa16.3e70.323b' ] formatted_macs = [] for x in list1: # 去掉点并转大写 cleaned_mac = x.replace('.', '').upper() # 每2个字符分割成一组,再用冒号连接 formatted = ':'.join([cleaned_mac[i:i+2] for i in range(0, len(cleaned_mac), 2)]) formatted_macs.append(formatted) print(formatted_macs) # 输出:['00:0C:29:E6:8F:A5', 'FA:16:3E:9F:0C:8C', 'FA:16:3E:70:32:3B']
方法二:用正则表达式匹配(适合严格校验格式)
如果需要确保输入是标准的4字符分段MAC,可以用正则先匹配再重组:
import re list1 = [ '000c.29e6.8fa5', 'fa16.3e9f.0c8c', 'fa16.3e70.323b' ] formatted_macs = [] # 匹配三段各4位的十六进制字符,忽略大小写 mac_pattern = re.compile(r'^([0-9a-f]{4})\.([0-9a-f]{4})\.([0-9a-f]{4})$', re.IGNORECASE) for x in list1: match_result = mac_pattern.match(x) if match_result: # 拼接三段字符串 full_mac = match_result.group(1) + match_result.group(2) + match_result.group(3) # 分组并连接,转大写 formatted = ':'.join([full_mac[i:i+2] for i in range(0, 12, 2)]).upper() formatted_macs.append(formatted) print(formatted_macs) # 输出同上
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

