2017-05-16 92 views
1

我試圖將字符串和數字與字符串格式化格式,但我得到一個錯誤字符串拼接

"TypeError: not all arguments converted during string formatting"

這是我的代碼

i = 0 
while (i<= 10): 
    print("insert into Member" + "(Mem_ID)") 
    print("values" + "(" + "Mem%d" + ")" %(i)) 
i = i+1 
+0

嘗試:'打印( 「值(MEM%d)」 %(I))'....沒有'+' – depperm

+2

這不回答你的問題,但你不應該使用Python的內置的字符串格式來組合sql語句。無論你用什麼庫來執行sql,都會有一個特性讓你插入變量而不會有sql注入攻擊的危險。 – Kevin

+0

嘗試'print(「values(Mem%d)」%(i))' – kuro

回答

4

問題是你如何使用%

正在更換的%d應在報價旁邊應有%(var)

i = 0 
while (i<= 10): 
    print("insert into Member " + "(Mem_ID)") 
    print("values " + "(" + "Mem%d"%(i) + ")") 
    i += 1 

請記住,您應該使用.format()作爲當前的方法。

i = 0 
while (i<= 10): 
    print("insert into Member " + "(Mem_ID)") 
    print("values " + "(" + "Mem{}".format(i) + ")") 
    i += 1 

另外要清楚一些你的報價是不需要的。你也可以使用它。

i = 0 
while (i<= 10): 
    print("insert into Member (Mem_ID)") 
    print("values (Mem{})".format(i)) 
    i += 1 
2

你可以這樣做更多simplier如果轉換成INT像這樣的字符串:

i = 0 
while (i<= 10): 
    print("insert into Member " + "(Mem_ID)") 
    print("values " + "(" + "Mem" + str(i) + ")") 
    i = i+1 
+1

你有相同的縮進問題,如OP – kuro

+0

確保在回答問題時使用適當的縮進。 –

+0

@kuro我的巨大的壞,非常感謝! –