Как заменить строку внутри словаря Python с помощью регулярных выражений - PullRequest
1 голос
/ 11 октября 2019

ЦЕЛЬ

Как заменить строку в словаре Python с помощью регулярных выражений?

SCRIPT

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

1 Ответ

1 голос
/ 11 октября 2019

Простой подход:

# 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'}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...