Скажем, у меня есть строка, которая выглядит так:
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:
Как уже отмечалось в комментариях к этому вопросу, мой словарь определен до начала выполнения и никогда не будет меняться в течение жизненного цикла приложений. Это список escape-последовательностей ANSI и будет содержать около 40 элементов. Моя средняя длина строки для сравнения будет около 500 символов, но будут те, которые содержат до 5000 символов (хотя это будет редко). Я также использую Python 2.6 в настоящее время.
Изменить # 2 Я принял Tor Valamos как правильный, поскольку он не только дал правильное решение (хотя это было не лучшее решение), но и принял во внимание всех остальных, и сделал огромную работу, чтобы сравнить их все. Этот ответ - один из лучших, наиболее полезных ответов, которые я когда-либо встречал в StackOverflow. Престижность к вам.