在蟒蛇说,你有串联字符串和整数蟒蛇
s = "string"
i = 0
print s+i
会给你错误 所以你写
print s+str(i)
不出现错误。
我认为这是一个笨拙的方式来处理int和字符串连接。 即使Java并不需要显式强制转换为字符串来执行这种排序 的串联。 有没有更好的方法来做这种连接,即没有在Python中进行显式转换?
在蟒蛇说,你有串联字符串和整数蟒蛇
s = "string"
i = 0
print s+i
会给你错误 所以你写
print s+str(i)
不出现错误。
我认为这是一个笨拙的方式来处理int和字符串连接。 即使Java并不需要显式强制转换为字符串来执行这种排序 的串联。 有没有更好的方法来做这种连接,即没有在Python中进行显式转换?
现代字符串格式化:
"{} and {}".format("string", 1)
感谢这个很好的方式来做到这一点。 – specialscope 2012-07-19 10:48:05
只是为了后代,因为事情在过去发生了变化,未来可能会发生变化:这是哪个版本的“现代”? – jvriesem 2018-02-09 23:08:36
字符串格式化,使用新型.format()
方法(使用默认值.format()提供):
'{}{}'.format(s, i)
或者上了年纪,但 “还在坚持围绕”,%
-formatting:
'%s%d' %(s, i)
在上面的两个例子中都有没有这两个项目之间的空格连接在一起。如果需要空间,它可以简单地添加在格式字符串中。
这些提供了一个lot关于如何连接项目,他们之间的空间等的控制和灵活性。关于format specifications see this的详细信息。
没有字符串格式化:
>> print 'Foo',0
Foo 0
这对打印效果很好,但不能作为字符串分配给变量。它给出了Set对象。 – specialscope 2012-07-19 10:49:31
除非您使用v3'print()'*函数*并设置它的某些参数,否则它还会在两个项目之间留有额外空白。 – Levon 2012-07-19 10:59:03
的Python是一个有趣的语言,而通常有一个(或两个)“显而易见”的方式来完成任何给定任务,灵活性依然存在。
s = "string"
i = 0
print (s + repr(i))
上面的代码片段是用Python3语法,但印刷后的括号总是允许(可选),直到第3版使他们强制性的。
希望这会有所帮助。
凯特琳
这是因为Python是强类型(https://en.wikipedia.org/wiki/Strong_typing)语言(东西,谷歌了解更多:))。 – mouad 2012-07-19 10:44:58
这会导致含糊不清。 “1”+ 1“,”2“或”11“的结果是什么?为什么? – Buddy 2012-07-19 11:02:25
好友我不确定你在想什么,但请不要假设。我的问题是连接2个不同的对象类型,我找到了解决方案。我不知道你在python中编程了多少,但是你有没有试过连接两个字符串只在其中一个是None类型时才会出错?你可以做明确的检查亚,但这只是额外的代码。当你需要记录错误时,这种事情是必需的。 – specialscope 2012-09-19 04:48:00