繁体   English   中英

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

[英]Extract the strings from list of dictionaries python

我有以下词典列表。

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

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

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

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

例如:

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

您可以像这样拆分变量:

device_names[0].split(', ')

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

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

希望这可以帮助。

您可以加入他们:

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

只需将所需的过滤器添加到列表推导中即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM