Форум сайта python.su
0
Здравствуйте. Хотел сделать так, чтобы мои символы в виде букв преобразовались в цифры. К примеру, a=1, b=2, и т.д. Есть какая-то возможность такое сделать именно через регулярные выражения? Только начинаю изучать их, посимвольное решение вижу, но вот через регулярные нет.
import re def calc(stroke): number_stroke = re.sub(r'\w', '???', stroke) return number_stroke text = "a+(b+c)*a-b" print(calc(text))
Офлайн
294
ну шоб чисто через одну re, то тут ХЗ, а так вообще можно, если использовать ре, лямбду и словарь.
import re text = "a+(b+c)*a-b" dct = { "a" : "1", "b" : "2", "c" : "3", } print(re.sub('({})'.format("|".join(map(re.escape, dct.keys()))), lambda x: dct[x.string[x.start():x.end()]], text)) >>> 1+(2+3)*1-2 >>>
print(re.sub('(a|b|c)', lambda x: {'a': '1', 'c': '3', 'b': '2'}[x.group()] , text)) >>> 1+(2+3)*1-2 >>>
[code python][/code]
Отредактировано PEHDOM (Авг. 7, 2018 23:54:06)
Офлайн