2013-11-14 44 views
-1

格式化任何想法時轉換爲什麼我得到這個errror消息的所有參數:類型錯誤:不串在python

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) 

回答

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} 

,不會抱怨未使用的密鑰。

0
return u"""<p>%s sparades!</p> 

「」」%(人,PID)

你有一個格式指示符(%s),但兩個值:personpId,你沒有一個符,就像%dpId