所以我有一个清单:
myList = ['14:14:12.294 0,Type=Xover,Count=179,mcuTs=0x000DC827,fpgaTs=0xDB3C,lp-isD=1,lp-xoD=2344,alid=65535,cdr=65535,vhpn=65535,va=65535',
'14:14:12.295 0,Type=Bndry,Count=88,mcuTs=0x000DCB00,fpgaTs=0x9DEC,lp-isD=1,lp-xoD=2344,alid=65535,cdr=65535,vhpn=65535,va=65535',
'14:14:12.295 0,Type=IsXover,Count=136,mcuTs=0x000DC822,lp-isD=1,lp-xoD=2344,alid=65535,cdr=65535,vhpn=65535,va=65535']
我正在尝试将'alid=*****'
并存储'vhpn=*****'
到另一个名为“resultList”的列表中。我有找到特定字符并将其拆分到下一个逗号的代码:
for string in myList:
mcuTimes1 = string[string.rfind('alid')+0:].split(',')[0]
mcuTime1.append(mcuTimes1)
但问题是因为'alid=*****'
并且'vhpn=*****'
在列表中不是连续的(一个接一个)我无法将它们放在一起(如果我尝试将它们与我的代码放在一起,它也会包含在内'cdr=*****'
)。我想知道是否有人知道如何获得列表的两个不同部分?
更新:
我不能使用正则表达式,
我希望结果如下所示:
['alid=65535,vhpn=65535', 'alid=65535,vhpn=65535', 'alid=65535,vhpn=65535']
您可以在此处使用正则表达式:
matches = [','.join(re.findall(r'(alid=\d+|vhpn=\d+)', i)) for i in myList]
输出:
['alid=65535,vhpn=65535', 'alid=65535,vhpn=65535', 'alid=65535,vhpn=65535']
正则表达式解释:
( // matching group 1
alid=\d+ // matches alid= followed by 1 or more digits
| // OR
vhpn=\d+ // matches vhpn= followed by 1 or more digits
) // end of matching group 1
不使用正则表达式的解决方案:
matches = []
for s in myList:
options = s.split(',')
found = []
for option in options:
if option[:option.find('=')] in {'alid', 'vhpn'}:
found.append(option)
matches.append(','.join(found))
print(matches)
输出:
['alid=65535,vhpn=65535', 'alid=65535,vhpn=65535', 'alid=65535,vhpn=65535']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句