我有下面的词典列表。
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
答案 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]
只需将您需要的过滤器添加到列表理解中。