2012-05-30 129 views
1

我遇到線條像這樣的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中打印相同的行?提前致謝!

回答

6

在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語句都需要()

0

您也可以連接字符串。這是Python的少,讓您在您的輸出的最終外觀的控制較少,但一些非程序員似乎覺得這更容易閱讀(比如,你要討論具體的計算):

print "Let's talk about " + str(my_name) 

的STR ()函數可能需要也可能不需要,但它允許您添加其他數據類型(如整數)而不會出現TypeError。

有關的String.Format()VS%的更多信息,請參閱本較早的帖子: Python string formatting: % vs. .format

0

除了這裏其他的答案,也有映射按鍵,這是我花了太多的時間在發現我的與Python的生活。

>>> '%(foo)s' % {'foo': 'bar'} 
'bar' 

看看String Formatting Operations爲整個shebang。

2

在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) 
+0

我剛開始使用.format方法..爲什麼你會顯示最後打印是首選的方法是什麼?我覺得它非常冗長。我不是在爭論,但我沒有看到好處。也許這只是這個簡單例子的背景?或者有這個好理由嗎? – Levon

+0

@Levon,format()爲您提供了對輸出的很多控制 - 間距,填充等。在文本輸出中使用替換映射是一個很好的習慣,因爲如果您必須執行i18n –

0

我最喜歡的是使用字典值:

>>> values = {"name": "john"} 
>>> print "Let's talk about {name}".format(**values) 
Let's talk about john 
+0

取決於您需要通過打印輸出的數據範圍。對於單行而言,只有一個值是過度的,但是當您開始增加輸出中的變量時,它可以更清晰。 – monkut