如何使用正则表达式替换python字典中的字符串

如何使用正则表达式替换python字典中的字符串,python,regex,Python,Regex,目标 如何使用正则表达式替换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], 'osplat

目标

如何使用正则表达式替换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'
CODE_CLIENT  HOSTNAME     OSPLATFORM
    1       SRVDATA:23   WINSERVER
错误-输出

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'
CODE_CLIENT  HOSTNAME     OSPLATFORM
    1       SRVDATA:23   WINSERVER
DB\u结果

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

re.findall
返回一个不能用作dict键的列表
re.findall(regex,lds_item[1])
返回一个列表,然后尝试将其设置为字典中的键。这失败了,因为dict键必须是不可变的对象(字符串、整数等)。如何修复@如何修复@Dan@LuisV.,发布数据库结果和最终预期结果。使用序列作为dict键的目标是什么?