Python как заменить строку через словарь - PullRequest
0 голосов
/ 05 мая 2018

EX)

import re

nodeDic = {"ABC-3K":"True","TTR":"True"}<br />
address = "ABC-3K and TTR"

result = eval(re.sub(r"\b(\w+)\b", lambda m: nodeDic.get(m.group(1), m.group(1)), address))<br />

print(result)
--->True and True

но у меня есть ошибки:

Traceback (последний вызов был последним): File «C: /Users/IT1_807_6/PycharmProjects/choonlog/Test/eval.py», строка 6, в result = eval (re.sub (r "\ b (\ w +) \ b", лямбда m: nodeDic.get (m.group (1), m.group (1)), адрес)) Файл "", строка 1 GSK-3b и True ^ SyntaxError: неверный синтаксис

Когда я удаляю дефис (-), не имеет значения. Но когда я использую символ дефиса (-), это имеет значение. Я должен использовать дефис (-)

1 Ответ

0 голосов
/ 05 мая 2018

Хорошо, я нашел регулярное выражение, которое делает то, что вы хотите, но это полный беспорядок:

 (?:(?<=\A)|(?<=\s))(.+?)(?=\Z|\s)

Если вы используете это регулярное выражение:

nodeDic = {"ABC-3K":"True","TTR":"True"}
address = "ABC-3K and TTR"

result = eval(re.sub(r"(?:(?<=\A)|(?<=\s))(.+?)(?=\Z|\s)", lambda m: nodeDic.get(m.group(1),m.group(1)), address))

print(result) # prints True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...