Eu tenho que pegar uma string contendo espaços reservados para substituição posterior, como:
"A %s B %s"
E transforme isso em:
"A {0} B {1}"
Eu vim com:
def _fix_substitution_parms(raw_message):
rv = raw_message
counter = 0
while '%s' in rv:
rv = rv.replace('%s', '{' + str(counter) + '}', 1)
counter = counter + 1
return rv
Isso funciona, mas parece super desajeitado, e nem um pouco python "idiomático".
Como seria uma solução python bem idiomática?
Atualizações para esclarecimentos:
- as seqüências resultantes não são usadas no python. I fazer precisar os números do contador em lá! (então
{}não é bom o suficiente)! - Eu só preciso me preocupar com
%sseqüências de caracteres, pois as mensagens são garantidas para usar apenas%s(não é o%i %fque for)