Повторное выражение Python заменяет значение ASCII

Моя строка ввода - это что-то вроде He#108##108#o, а выход должен быть Hello.

В основном я хочу заменить каждый #[0-9]+# на соответствующие символы ASCII номера внутри ##.

Ответ 1

Используйте функцию замены в вашем регулярном выражении, которая извлекает цифры, преобразует их в целое число, а затем в символ:

import re

s = "He#108##108#o"

print(re.sub("#(\d+)#", lambda x : chr(int(x.group(1))), s))

Результат:

Hello

Ответ 2

Вы можете использовать re.split():

import re

s = "He#108##108#o"

new_s = re.split("#+", s)

final_s = ''.join(chr(int(i)) if i.isdigit() else i for i in new_s)

Вывод:

Hello