目标

如何使用正则表达式替换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'}}

08-05 06:44