Python ValueError:用字符串格式解压缩的值太多了

时间:2015-06-11 21:02:21

标签: python django

我正在使用Python字符串为电子邮件创建html,如下所示:

      # Code setting up the message html
      message = "long html message string"

      scoped = ""
      if settings.DEBUG:
          scoped = "scoped"

      header = """                                                                
          <style %s type='text/css'>                                              
              @media only screen and (max-width: 480px){                          
                  .emailImage{                                                    
                      height:auto !important;                                     
                      max-width:200px !important;                                 
                      width: 100% !important;                                     
                  }                                                               
              }                                                                   
          </style>                                                                
          """ % scoped
      footer = "html message footer"

      message = header + message + footer

      # Code sending the message.

问题是,上面的代码给了我错误ValueError: too many values to unpack。但是,如果我从消息中删除scoped变量,html就会运行,也就是说,这是有效的(尽管没有按我的意愿将范围变量添加到我的HTML中)。

      # Code setting up the message html
      message = "long html message string"

      header = """                                                                
          <style type='text/css'>                                              
              @media only screen and (max-width: 480px){                          
                  .emailImage{                                                    
                      height:auto !important;                                     
                      max-width:200px !important;                                 
                      width: 100% !important;                                     
                  }                                                               
              }                                                                   
          </style>                                                                
          """
      footer = "html message footer"

      message = header + message + footer

      # Code sending the message.

为什么第一个版本会抛出该错误,如何解决ValueError?

1 个答案:

答案 0 :(得分:4)

width元素后面有一个未转义的%符号,添加另一个%来逃避它:

  header = """                                                                
      <style %s type='text/css'>                                              
          @media only screen and (max-width: 480px){                          
              .emailImage{                                                    
                  height:auto !important;                                     
                  max-width:200px !important;                                 
                  width: 100%% !important;                                     
              }                                                               
          }                                                                   
      </style>                                                                
      """ % scoped

请注意,当您摆脱% scoped时,您不再格式化字符串,%字符不再特殊。