如何在Python3中打印printf?

时间:2013-10-18 19:03:03

标签: python string python-3.x

在Python 2中我用过:

print "a=%d,b=%d" % (f(x,n),g(x,n))

我试过了:

print("a=%d,b=%d") % (f(x,n),g(x,n))

10 个答案:

答案 0 :(得分:181)

在Python2中,print是一个引入语句的关键字:

print "Hi"

在Python3中,print是一个可以调用的函数:

print ("Hi")

在两个版本中,%是一个运算符,它需要左侧的字符串和值的值或元组或右侧的映射对象(如dict)侧。

所以,你的界限应该是这样的:

print("a=%d,b=%d" % (f(x,n),g(x,n)))

此外,对Python3及更新版本的建议是使用{} - 样式格式而不是% - 样式格式:

print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))

Python 3.6引入了另一种字符串格式范例:f-strings

print(f'a={f(x,n):d}, b={g(x,n):d}')

答案 1 :(得分:49)

最值得推荐的方法是使用format方法。详细了解here

a, b = 1, 2

print("a={0},b={1}".format(a, b))

答案 2 :(得分:23)

来自O'Reilly's Python Cookbook的简单printf()函数。

import sys
def printf(format, *args):
    sys.stdout.write(format % args)

示例输出:

i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14

答案 3 :(得分:19)

Python 3.6为内联插值引入了f字符串。甚至更好的是它扩展了语法以允许带插值的格式说明符。当我用Google搜索时,我一直在做的事情(并且遇到了这个老问题!):

print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')

PEP 498有详细信息。并且...它在其他语言中使用格式说明符对我的宠物进行排序 - 允许说明符本身可以是表达式!好极了!请参阅:Format Specifiers

答案 4 :(得分:12)

简单示例:

print("foo %d, bar %d" % (1,2))

答案 5 :(得分:8)

更简单的一个。

def printf(format, *values):
    print(format % values )

然后:

printf("Hello, this is my name %s and my age %d", "Martin", 20)

答案 6 :(得分:3)

由于您的%位于print(...)个括号之外,因此您尝试将变量插入print来电的结果中。 print(...)会返回None,所以这不会起作用,而且这个时间和行程被我们所居住的宇宙定律所禁止,这也是你已经打印过模板的小事。 / p>

您要打印的整个内容(包括%及其操作数)需要内部print(...)调用,以便字符串可以在它之前构建打印出来。

print( "a=%d,b=%d" % (f(x,n), g(x,n)) )

我添加了一些额外的空格以使其更清晰(虽然它们不是必需的,通常不被认为是好的风格)。

答案 7 :(得分:1)

print("Name={}, balance={}".format(var-name, var-balance))

答案 8 :(得分:0)

其他字样printf在python中缺席...我很惊讶! 最好的代码是

def printf(format, *args):
    sys.stdout.write(format % args)

因为这种形式允许不打印\ n。所有其他人没有。这就是为什么打印是坏运营商的原因。而且你需要以特殊形式编写args。上面的功能没有缺点。它是printf函数的标准常用形式。

答案 9 :(得分:-2)

print("{:.4f} @\n".format(2))

格式化在此类情况下很有帮助。

您可以在下面的链接中参考更多详细信息。

Python Formatting