我有一句这样的台词:
a = "switchport port-security mac-address 000a.1111.2222 vlan 43"我想把mac和vlan号码放在如下列表中:
["000a.1111.2222","43"]我想像下面这样的东西会起作用的,有什么想法吗?
import re
a = "switchport port-security mac-address 000a.1111.2222 vlan 43"
b = re.findall("([a-fA-F0-9]{4}[\.]){2}([a-fA-F0-9]{4})|(\d+)",a)
print b发布于 2015-02-26 17:06:46
这里有一个使用split的稍微不同的解决方案,如果您不确定是否可以在splitted的索引3和5处抓取元素(在本例中,它分别在"mac-address"和"vlan"之后捕获split泰德元素):
In [1]: a = "switchport port-security mac-address 000a.1111.2222 vlan 43"
In [2]: splitted = a.split()
In [3]: [x for i,x in enumerate(splitted) if i > 0 and splitted[i-1] in ["mac-address", "vlan"]]
Out[3]: ['000a.1111.2222', '43']发布于 2015-02-26 16:59:33
如果没有正则表达式,只需使用split。
a = "switchport port-security mac-address 000a.1111.2222 vlan 43"
split_list = a.split()
required_info = [split_list[3],split_list[5]]
print required_info
>> ["000a.1111.2222","43"]发布于 2015-02-26 17:05:04
你只需要分组:
>>> a = "switchport port-security mac-address 000a.1111.2222 vlan 43"
>>> import re
>>> re.findall(r'mac-address (.*).*vlan (.*)',a)
[('000a.1111.2222 ', '43')]https://stackoverflow.com/questions/28748210
复制相似问题