Скажем, у меня есть строка, которая выглядит следующим образом:
str = "The &yquick &cbrown &bfox &Yjumps over the &ulazy dog"
Вы заметите множество мест в строке, где есть амперсанд, за которым следует символ (например, "& y" и "& c"). Мне нужно заменить эти символы подходящим значением, которое у меня есть в словаре, например так:
dict = {"&y":"\033[0;30m",
"&c":"\033[0;31m",
"&b":"\033[0;32m",
"&Y":"\033[0;33m",
"&u":"\033[0;34m"}
Какой самый быстрый способ сделать это? Я мог бы вручную найти все амперсанды, а затем перебрать словарь, чтобы изменить их, но это кажется медленным. Выполнение множества замен регулярных выражений также кажется медленным (у меня в моем коде будет словарь из 30-40 пар).
Любые предложения приветствуются, спасибо.
Edit:
Как отмечалось в комментариях к этому вопросу, мой словарь определен до времени выполнения и никогда не изменится в течение жизненного цикла приложений. Это список управляющих последовательностей ANSI, в котором будет около 40 элементов. Моя средняя длина строки для сравнения будет около 500 символов, но будут и те, которые до 5000 символов (хотя, они будут редкими). Я также использую Python 2.6 в настоящее время.
Редактировать # 2
Я принял ответ Tor Valamos как правильный, поскольку он не только дал правильное решение (хотя это не было best решение), но принял во внимание все остальные и проделал огромную работу для сравнения все они. Этот ответ - один из лучших, самых полезных ответов, которые я когда-либо встречал на StackOverflow. Слава тебе.