2014-09-25 84 views
0

我已经在python之前做了一些基本的进步,不过是使用用户定义的函数,输入和基本的东西来指挥陆地代数计算器来做数学作业。自从我使用了codeacademy的Python 2课程后,我发现没有使用%和%s作为PY3的等价物。什么是字符串中%s的Python 3等效物?

我已经把它缩小到与format()有一些关系,但是就我可以在Google上找到的那样。

作为一个初学者,我真的体会到淡化解释如何翻译成Python 3本:

str1 = "Bob," 
str2 = "Marcey." 
print "Hello %s hello %s" % (str1, str2) 

编辑:另外,我知道,打印(“你好” + STR1 + “你好”+ str2)会起作用。

+0

为什么你认为他们不再工作在3.x? – 2014-09-25 02:13:42

+0

%格式化在Python 3中继续工作。 – Max 2014-09-25 02:13:57

+0

@ IgnacioVazquez-Abrams这在Py3中不起作用:a =“Hello”, b =“world!” print(“%s%s”)%(a,b) – Gavin 2014-09-25 02:16:00

回答

2

str.__mod__()继续在3.x中工作,但在PEP 3101中描述了使用str.format()执行字符串格式设置的新方法,并且随后被反向移植到最新版本的2.x.

print("Hello %s hello %s" % (str1, str2)) 

print("Hello {} hello {}".format(str1, str2)) 
+0

完美的工作!谢谢!我现在知道了。 – Gavin 2014-09-25 02:21:18

1

%运营商与print无关;相反,它是一个字符串运算符。考虑这种有效的Python 2.x的代码:

x = "%s %s" % (a, b) 
print x 

几乎相同的代码工作在Python 3:

x = "%s %s" % (a, b) 
print(x) 

你的企图都将被正确地写为

print("%s %s" % (a, b)) 

%操作类似于到C函数sprintf,而不是printf

3

这应该按预期工作:

str1 = "Bob," str2 = "Marcey." print("Hello {0} hello {1}".format(str1, str2))

虽然在Python 3使用%至格式字符串仍然是功能性的,建议使用新的String.Format()。它更强大,%会在某个时候从语言中删除。

请在Python网站上查看从Python 2.7到Python 3的更改,并且文档包含您需要的所有内容。

:)

+0

较新版本的Python不会强制在'{0}'内写入索引。你可以使用'{}'。 – pepr 2014-09-25 11:52:05

相关问题