我遇到線條像這樣的Python:如何打印線在Python
print "Let's talk about %s." % my_name
不過,我已經看到的情況在Ruby中,其中這兩個具有等效輸出:
print "Let's talk about #{my_name}."
print "Let's talk about %s." % my_name"
是否只有一種方法可以在Python中打印相同的行?提前致謝!
我遇到線條像這樣的Python:如何打印線在Python
print "Let's talk about %s." % my_name
不過,我已經看到的情況在Ruby中,其中這兩個具有等效輸出:
print "Let's talk about #{my_name}."
print "Let's talk about %s." % my_name"
是否只有一種方法可以在Python中打印相同的行?提前致謝!
在Python也有幾種方式:
print "let's talk about this %s" % my_name
print "let's talk about this {:s}".format(my_name)
print "let's talk about this", my_name
都產生相同的輸出。但是,鼓勵使用.format方法(自Python v 2.6起可用)優於舊式%
(引用What's New in 3.0:「...%運算符仍然受支持;它將在Python 3.1中被棄用並被刪除「)
最後,從Python v3.x開始print
是一個函數,所以所有的print語句都需要()
。
您也可以連接字符串。這是Python的少,讓您在您的輸出的最終外觀的控制較少,但一些非程序員似乎覺得這更容易閱讀(比如,你要討論具體的計算):
print "Let's talk about " + str(my_name)
的STR ()函數可能需要也可能不需要,但它允許您添加其他數據類型(如整數)而不會出現TypeError。
有關的String.Format()VS%的更多信息,請參閱本較早的帖子: Python string formatting: % vs. .format
除了這裏其他的答案,也有映射按鍵,這是我花了太多的時間在發現我的與Python的生活。
>>> '%(foo)s' % {'foo': 'bar'}
'bar'
看看String Formatting Operations爲整個shebang。
在ruby中,{}
之間的部分是一個表達式。 Python無法通過這種方式評估表達式裏面的格式字符串。
print "Let's talk about #{my_name}."
在簡單的情況下,在短短一個變量表達式,你可以使用
print "Let's talk about %(my_name)s"%{'my_name':my_name}
或任何一羣在這裏其他的答案給出其他選擇的。
首選的方法是使用format()。例如。
print "Let's talk about {my_name}".format(my_name=my_name)
我最喜歡的是使用字典值:
>>> values = {"name": "john"}
>>> print "Let's talk about {name}".format(**values)
Let's talk about john
取決於您需要通過打印輸出的數據範圍。對於單行而言,只有一個值是過度的,但是當您開始增加輸出中的變量時,它可以更清晰。 – monkut
我剛開始使用.format方法..爲什麼你會顯示最後打印是首選的方法是什麼?我覺得它非常冗長。我不是在爭論,但我沒有看到好處。也許這只是這個簡單例子的背景?或者有這個好理由嗎? – Levon
@Levon,format()爲您提供了對輸出的很多控制 - 間距,填充等。在文本輸出中使用替換映射是一個很好的習慣,因爲如果您必須執行i18n –