如何在Python中打印行

时间:2012-05-30 01:28:43

标签: python ruby

我在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中只有一种方法可以打印同一行吗?

5 个答案:

答案 0 :(得分: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是一个函数,因此所有打印语句都需要()

答案 1 :(得分: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)

答案 2 :(得分:0)

您还可以连接字符串。这不是pythonic,并且让你对输出的最终外观控制较少,但是一些非程序员似乎发现这更容易阅读(就像你正在讨论特定的计算一样):

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

str()函数可能是必需的,也可能不是必需的,但它允许您添加其他数据类型(如整数)而不会出现TypeError。

有关string.format()vs%的详细信息,请参阅此较旧的帖子: Python string formatting: % vs. .format

答案 3 :(得分:0)

除了这里的其他答案之外,还有一些映射键,我在Python的生活中花了很长时间才发现它。

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

看看整个shebang的String Formatting Operations

答案 4 :(得分:0)

我最喜欢的一个是使用词典来表示值:

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