如何删除python

时间:2017-04-24 06:51:27

标签: python list data-manipulation

我一直试图找到一种方法从包含其他无用数据的字符串中获取MAC地址和设备名称,我设法从该字符串中删除不必要的数据,但因为该字符串包含多个设备名称和MAC地址我发现很难在两个不同的字符串或列表中获取设备名称及其MAC地址。字符串包含如下数据:

'设备XX:XX:XX:XX:XX设备名称1

               Device XX:XX:XX:XX:XX Device_name2
               Device XX:XX:XX:XX:XX Device_name3

” 我用过这个代码:

t= e.splitlines(True)
print(len(t),t)

我也使用Split('\ n')

我得到的就是这个:

 226
 (16, [' \r\n', ' \r', '                        \r', ' Device 
 C4:XX:XX:XX:XX:XX name\r\n', ' \r', '                        \r', ' Device 
 55:XX:XX:XX:XX:XX name\r\n', ' \r', '                        \r', ' Device 
 XX:XX:XX:XX:XX:XX Name _XYXY\r\n', ' \r\n', '   \r\n', '  \r\n', ' \r', '                        
 \r', ' '])

在此之后,我发现很难将设备名称和MAC地址转换为不同的字符串。 使用下面的代码,我能够从列表的每个元素中获取MAC地址。

p = re.compile('(?:[0-9a-fA-F]:?){12}')
red = str(t)
ting = re.findall(p, red)   
print(ting)

但我仍在试图找出获取设备名称的方法。我希望获取不同字符串中每个设备的名称和MAC地址,如String1 =“设备名称MAC地址”string2 =“设备名称MAC地址”。

请分享您的建议谢谢。

2 个答案:

答案 0 :(得分:1)

拆分线后,您需要逐行拆分每一条线。您可以使用空格作为分隔符。

您可以使用列表理解来简化这一过程。例如,获取MAC:

In [16]: devices = '''
    ...: Device XX:XX:XX:XX:XX Device_name2
    ...: Device XX:XX:XX:XX:XX Device_name3
    ...: '''

In [17]: [s.split(' ')[1] for s in devices.splitlines() if s]
Out[17]: ['XX:XX:XX:XX:XX', 'XX:XX:XX:XX:XX']

答案 1 :(得分:0)

我认为您可以使用地址创建名称字典。可以隐式创建字符串变量但我不推荐它,因为字典更安全并且允许您执行相同的操作。字典还允许您解析设备,而如果您要创建单独的字符串变量,则无法以简单的方式查看创建的变量。我就是这样做的:

devices = '''
 Device XX:XX:XX:XX:XX Device_name2
 Device XX:XX:XX:XX:XX Device_name3
'''
dLines = devices.splitlines()

#If you want to make a dictionary:
devDict = dict([(device.split(' ')[3], device.split(' ')[2]) for device in dLines if device])
#Access specific adresses:
adress = devDict['Device_name2']

#If you want separate lists of names and adress:
adresses = [device.split(' ')[2] for device in dLines if device]
names = [device.split(' ')[3] for device in dLines if device]

这给出了以下变量:

>>> devDict
{'Device_name2': 'XX:XX:XX:XX:XX', 'Device_name3': 'XX:XX:XX:XX:XX'}
>>> devDict['Device_name2']
'XX:XX:XX:XX:XX'
>>> names
['Device_name2', 'Device_name3']
>>> adresses
['XX:XX:XX:XX:XX', 'XX:XX:XX:XX:XX']