2016-06-13 72 views
0

我最近開始學習python,不明白%r和%s。兩者有什麼區別?類比將不勝感激。我試圖解決問題,看看這兩者是如何工作的。我創建了簡單的代碼來理解python中的字符串,但它似乎不起作用。下面的代碼有什麼問題,以及這樣做的正確方法是什麼?你也可以一步步顯示你在正確的代碼中做什麼?感謝您幫助業餘學習python。瞭解%r和%s

formatter = "%r %r %r %r" 
print "Here are the days: formatter" % ('Monday','Tuesday','Wednesday','Thursday') 
+1

你把'formatter'作爲一個字符串而不是變量,這就是爲什麼可能不起作用,所以'print formatter%(...)' –

+0

@John Smith你的代碼工作正常,正如cricket_007指出的那樣你只需要使用'formatter'作爲變量:'print「下面是幾天:」,formatter%('Monday','Tuesday','Wednesday','Thursday')' – davedwards

回答

0

與你代碼的問題是,你是不是添加formatter varibale字符串,但文字字符串。要解決這一點:

formatter = "%r %r %r %r" 
print "Here are the days: " + formatter % ('Monday','Tuesday','Wednesday','Thursday') 

現在關於%s%r:不同的是,這%r使用__repr__方法您的對象轉換爲字符串並%s使用__str__。有關的__repr____str__的區別深入的信息,你可以看看這個答案:https://stackoverflow.com/a/2626364/5189673

而且該格式只取元組的元素,使用他們的__repr__(如%r時)將它們轉換爲一個字符串然後用取得的字符串替換%r

0

在您例如%s%r之間的區別是

>>> print "Here are the days: %s %s %s %s" % ('Monday', ... 
Here are the days: Monday Tuesday Wednesday Thursday 

VS

>>> print "Here are the days: %r %r %r %r" % ('Monday', ... 
Here are the days: 'Monday' 'Tuesday' 'Wednesday' 'Thursday' 

注意引號表示在%r例如一個字符串。一般來說,當你希望輸出是有效的python時,使用repr轉換(即%r)。這可能是因爲您想輸出eval,或者您可能希望保存輸出以便稍後進行評估。