2012-01-13 16 views
26

funciona esto:ValueError: carácter de formato no soportado, formando cadenas

print "Hello World%s" %"!" 

Pero esto no

print "Hello%20World%s" %"!" 

el error es ValueError: unsupported format character 'W' (0x57) at index 8

estoy usando Python 2.7.

¿Por qué haría esto? El pozo %20 se usa en lugar de espacios en urls, y si lo usa, no puedo formar cadenas con los formatos printf. Pero, ¿por qué Python hace esto?

Respuesta

3

Bueno, ¿por qué tiene %20 url-quoting escapes en una cadena de formato en primer lugar? Lo ideal sería hacer la interpolación de formatear primero:

formatting_template = 'Hello World%s' 
text = '!' 
full_string = formatting_template % text 

Entonces URL citarlo después:

result = urllib.quote(full_string) 

Eso es mejor porque sería citar todas las cosas url-citable en su cadena, incluyendo cosas que está en la parte text.

2

Es posible que tenga un error tipográfico ... En mi caso, yo estaba diciendo% w, donde quería decir% s.

Cuestiones relacionadas