Найти - Пользователи
Полная версия: Проблема с написанием регулярного выражения
Начало » Python для новичков » Проблема с написанием регулярного выражения
1
AndyWarhol
Здравствуйте. Хотел сделать так, чтобы мои символы в виде букв преобразовались в цифры. К примеру, 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))
PEHDOM
ну шоб чисто через одну 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
>>> 

оригинал решения тут https://code.activestate.com/recipes/81330-single-pass-multiple-replace/
Оно конечно не идеально, там есть свои недостаки и нюансы, но в данном случае подходит.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB