El siguiente código genera una KeyError
excepción:
addr_list_formatted = []
addr_list_idx = 0
for addr in addr_list: # addr_list is a list
addr_list_idx = addr_list_idx + 1
addr_list_formatted.append("""
"{0}"
{
"gamedir" "str"
"address" "{1}"
}
""".format(addr_list_idx, addr))
¿Por qué?
Estoy usando Python 3.1.
enumerate
para obtener los puntos).Respuestas:
El problema son esos
{
y los}
caracteres que tiene allí que no especifican una clave para formatear. Necesita duplicarlos, así que cambie su código a:addr_list_formatted.append(""" "{0}" {{ "gamedir" "str" "address" "{1}" }} """.format(addr_list_idx, addr))
fuente
{
en la respuesta es solo para decirle alformat
método que no hay una clave para formatear aquí (por lo que se escapan en la cadena formateada y no debería ser un problema para construir un JSON de esa manera). Alternativamente, hay otras formas eficientes de manipular cadenas, como eljoin
método:"".join(['{"', var_name, '":', value, '}'])