Питання Формат Python кидає KeyError


Наступний фрагмент коду:

template = "\                                                                                
function routes(app, model){\                                                                
  app.get('/preNew{className}', function(req, res){\                                         
    res.render('{className}'.ejs, {});\                                                      
  });\                                                                                       
});".format(className=className)

кидає KeyError:

Traceback (most recent call last):   File "createController.py", line 31, in <module>
    });".format(className=className) KeyError: '  app'

Хто-небудь знає, чому?


38
2018-03-08 18:51


походження


Вам потрібно подвоїти всі фігурні дужки, які не повинні бути відформатовані. - Sven Marnach
Ви зустрілися багаторядкові рядки? Якщо ви використовуєте потрійні котирування, вам не потрібно втекти від кожного рядка. - Katriel
можливий дублікат str.format () не працює, keyError - luator


Відповіді:


У цьому коді є безліч неприхованих фігур. Python вважає, що всі брекети є замісниками і намагаються замінити їх усіма. Тим не менш, ви надали лише одне значення.

Я сподіваюся, що ви не хочете, щоб всі ваші фіксатори були заповнювачами, так що ви повинні подвоїти ті, які ви не хочете замінити. Як от:

template = """                                                                  
function routes(app, model){{
  app.get('/preNew{className}', function(req, res){{
    res.render('{className}'.ejs, {{}});                                           
  }};                                                      
}});""".format(className=className)

Я також взяв на себе право використовувати потрійні котирування для буквового ряду, тому вам не потрібні зворотні смуги в кінці кожного рядка.


58
2018-03-08 18:57