2017-01-10 57 views
4

我想用字符串格式在字符串中附加%如何在Python 2.7中包含字符串格式的%?

我試圖讓下面的輸出:

a : [" name like '%FTa0213' "] 

嘗試1:

a = [ ] 
b = {'by_name':"FTa0213"} 
a.append(" name like "%" %s' " %b['by_name']) 
print "a :",a 

錯誤:

a.append(" name like "%" %s' " %b['by_name']) 
TypeError: not all arguments converted during string formatting 

嘗試2:

a = [ ] 
b = {'by_name':"FTa0213"} 
c = "%" 
a.append(" name like '{0}{1}' ".format(c,b['by_name']) 
print "a :",a 

錯誤:

print "a :",a 
     ^
SyntaxError: invalid syntax 

怎樣包括我的格式化字符串一個%

回答

10

要包含%的%成將用於一個printf風格的字符串格式的字符串,只需通過包括雙百分號%%

a = [] 
b = {'by_name': "FTa0213"} 
a.append(" name like %%%s' " % b['by_name']) 
print "a :", a 

Docs

3

可以逃脫逃脫%百分號加倍。

a = [] 
b = {'by_name': "FTa0213"} 
a.append(" name like '%%%s' " % b['by_name']) 
print "a :", a 

輸出

a : [" name like '%FTa0213' "] 

不過,我認爲這是更清晰的使用format方法:

a = [ ] 
b = {'by_name': "FTa0213"} 
a.append(" name like '%{by_name}' ".format(**b)) 
print "a :", a 
6

在你第一次嘗試,您可以使用 「%」 的方式是錯的;下面的代碼可以用於第一次嘗試。由於「%」在Python字符串中是特殊的,所以您需要在真實的「%」之前添加「%」才能轉義。

在您的第二次嘗試中,您的打印沒有任何問題,您在a.append行中忘記了")"。 ;-)

5

只是把那裏%,沒有必要設置可變

a = [ ] 
b = {'by_name':"FTa0213"} 
a.append(" name like '%{}' ".format(b['by_name'])) 
print "a :",a 

輸出

一個: 「名稱,如 '%FTa0213'」]

+0

是的,謝謝你的工作! –

+0

@ShivkumarKondi歡迎的傢伙 –