目标
如何使用正则表达式替换python词典中的字符串?
脚本
db_result = cursor.fetchall() # databse
lds_data = {} # dictonary
regex = re.compile(r'^([^: \\]+)')
for lds_item in db_result:
lds_data.update({re.findall(regex, lds_item[1]) : {'cust_code' : lds_item[0], 'osplatofrm' : lds_item[2]]}})
错误-输出
TypeError: unhashable type: 'list'
DB_RESULT
CODE_CLIENT HOSTNAME OSPLATFORM
1 SRVDATA:23 WINSERVER
最终预期
{SRVDATA : {'CUST_CODE': 1, 'OSPLATFORM': 'WINSERVER'}
最佳答案
简单方法:
# sample DB result (of one record)
db_result = [[1, 'SRVDATA:23', 'WINSERVER']]
lds_data = {}
for lds_item in db_result:
k = lds_item[1][:lds_item[1].rfind(':')] # extracting key
lds_data.update({k: {'cust_code': lds_item[0], 'osplatofrm': lds_item[2]}})
print(lds_data) # {'SRVDATA': {'cust_code': 1, 'osplatofrm': 'WINSERVER'}}