-1

知道为什么我会收到此错误消息:

    editResponsHtml """ % (person, pId)
TypeError: not all arguments converted during string formatting?

代码:

def editRespons(form):
   global FAMILYTREE

   FAMILYTREE.editPerson(int(form.getvalue("id").decode('latin-1')), form.getvalue("firstName").decode('latin-1'), form.getvalue("lastName").decode('latin-1'), form.getvalue("bYear").decode('latin-1'), form.getvalue("dYear").decode('latin-1'), form.getvalue("mom").decode('latin-1'), form.getvalue("dad").decode('latin-1'))
   person = FAMILYTREE.getPerson(form.getvalue("id"))

   return editResponsHtml(person, person.fid)


def editResponsHtml(person, pId):
   return u"""<p>%s sparades!</p>
   """ % (person, pId)
4

2 回答 2

2

您正在传递两个值来格式化,但只指定一个插槽。

槽数和参数数量必须匹配。为元组添加一个插槽pId或将其从元组中删除:

def editResponsHtml(person, pId):
   return u"""<p>%s %s sparades!</p>
   """ % (person, pId)

def editResponsHtml(person, pId):
   return u"""<p>%s sparades!</p>
   """ % (person,)

或者,使用命名槽和字典:

def editResponsHtml(person, pId):
   return u"""<p>%(person)s sparades!</p>
   """ % {'person': person, 'pId': pId}

它不会抱怨未使用的密钥。

于 2013-11-14T12:45:31.977 回答
0
return u"""<p>%s sparades!</p>

""" % (人, pId)

您有一个格式说明符 ( %s) 但有两个值:person并且pId,您没有说明符,例如%dfor pId

于 2013-11-14T12:47:07.800 回答