从字典列表python中提取字符串

时间:2017-05-16 08:37:33

标签: python list dictionary

我有下面的词典列表。

self.local_devices_list =[
    {'type': '\x02', 'device_name': u'USB HID, ManufStr="", ProdStr="QWER1025", 
     SerialNum="ABCDEF0123456789", VendorID="0xa34", ProdID="0x4007"'},
    {'type': '\x02', 'device_name': u'USB HID, ManufStr="", ProdStr="ASDF452x", 
     SerialNum="ABCDEF0123456789", VendorID="0xa34", ProdID="0x4007"'}
]

我提取了关键字' device_name'的值。使用列表理解

device_names = [d["device_name"].encode("utf-8") for d in self.local_devices_list if "device_name" in d]

我想将device_name的信息提取到单独的字符串中,如下所示

 1. ProdStr = QWER1025
 2. SerialNum = ABCDEF0123456789
 3. VendorID = 0xa34
 4. ProdID = 0x4007

4 个答案:

答案 0 :(得分:2)

正则表达式可以轻松解决这个问题。

import re
regex = re.compile(r'(\w+)="(\w*)"', flags=re.IGNORECASE)
for d in device_names:
    print(dict(regex.findall(d)))
  

{' ManufStr':'',' ProdStr':' QWER1025',' SerialNum':   ' ABCDEF0123456789',' VendorID':' 0xa34',' ProdID':' 0x4007'}

     

{' ManufStr':'',' ProdStr':' ASDF452x',' SerialNum':   ' ABCDEF0123456789',' VendorID':' 0xa34',' ProdID':' 0x4007'}

答案 1 :(得分:0)

您可以使用.values()和list()。 values()会将字典中的值提取到valueView中,而list()会将它们提取到列表中。如果它们是字符串类型的,那么一切都很好,否则你需要在从列表中提取字符串时转换为字符串。

E.g:

ExtractedValues = list(self.local_devices_list.values())
str(ExtractedValues[0])

答案 2 :(得分:0)

您可以像这样拆分变量:

device_names[0].split(', ')

这将为您提供一些您应该能够处理的项目。

['USB HID', 'ManufStr=""', 'ProdStr="QWER1025"', 'SerialNum="ABCDEF0123456789"', 'VendorID="0xa34"', 'ProdID="0x4007"']

希望这有帮助。

答案 3 :(得分:-1)

你可以加入他们:

information = [[" ".join(t) for t in d.items()] for d in self.local_devices_list]

只需将您需要的过滤器添加到列表理解中。