如何删除 python 中列表的一部分元素

how to remove a part of element of list in python

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

' 设备 XX:XX:XX:XX:XX Device_name1

               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)

但我仍在尝试找出一种方法来获取设备 name.i 想要获取每个设备的名称和 MAC 地址在不同的字符串中作为 String1="Device name MAC address" string2= "Device name MAC address"。

请分享您的建议谢谢。

分割线后,您需要一根一根地分割每一行。您可以使用空 space 作为分隔符。

您可以使用列表理解来简化此操作。例如,获取 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']

我认为您可以创建一个包含地址的名称字典。可以隐式创建字符串变量,但我不推荐这样做,因为字典更安全并且允许您做同样的事情。字典还允许您通过设备进行解析,而如果您要创建单独的字符串变量,您将无法以简单的方式查看哪些变量是创建的。我会这样做:

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']