Python中字符串和整数的拼接

157

假设在Python中你有以下代码:

s = "string"
i = 0
print s + i

会导致错误,因此你需要写成:

print s + str(i)

如何避免出现错误。

我认为这是处理整数和字符串连接的一种非常笨拙的方法。

即使在Java中也不需要显式地将int转换为String来完成这种连接。是否有一种更好的方法来进行这种连接,即在Python中不需要显式转换?


9
这是因为Python是一种强类型语言(https://en.wikipedia.org/wiki/Strong_typing)(可以搜索了解更多信息 : ))。 - mouad
4
这会导致歧义。"1" + 1 的结果是 2 还是 "11",为什么? - Buddy
1
伙计,我不确定你在想什么,但请不要做出假设。我的问题是将两种不同的对象类型连接起来,我已经找到了解决方案。我不知道你在Python中编程的经验有多少,但你是否曾经尝试过将两个字符串连接起来,结果其中一个是None类型而导致错误?你可以进行显式检查,但那只是额外的代码。当你需要记录错误时,这种情况是必需的。 - specialscope
3
只需要s+str(i),你就是正确的! - user9258013
9个回答

195

现代字符串格式化:

"{} and {}".format("string", 1)

11
为了记录历史,因为过去的事情已经发生变化,而且未来也很可能会发生变化:这个“现代”的版本是指哪个版本? - jvriesem
2
str.format 方法在 Python 3.0 中被引入,并向后移植到 Python 2.6(请参见 https://dev59.com/OnRA5IYBdhLWcg3w4iF_#792745)。 - MechtEngineer

92

没有字符串格式化:

>> print 'Foo',0
Foo 0

5
这段代码可以很好地用于打印,但无法作为字符串分配给变量。它返回一个Set对象。 - specialscope
4
如果你使用 v3 版本的 print() 函数并设置一些参数,它还会在两个项目之间添加一个额外的空格。 - Levon

40

使用新式的.format()方法进行字符串格式化(使用默认值.format()提供):

 '{}{}'.format(s, i)

或者更老的,但仍然存在的%格式化:

 '%s%d' %(s, i)
在上面两个示例中,两个项目连接在一起时没有空格。如果需要空格,可以在格式字符串中简单地添加它。
这些提供了很多控制和灵活性来决定如何连接项目,它们之间的空格等等。有关格式规范的详细信息,请参见此处

21

Python是一种有趣的编程语言,因为在完成任何特定任务时通常有一到两种“明显”的方法,但仍然存在灵活性。

s = "string"
i = 0

print (s + repr(i))

上面的代码片段是用Python 3语法编写的,但在版本3之前,print后面的括号总是被允许(可选)的,直到版本3将它们变成了必须的。

以上代码片段采用Python 3语法编写,但在版本3之前,print语句后面的括号一直是可选项,直到版本3将其变成了必须的。

9
在Python 3.6及以上版本中,您可以按照以下方式对其进行格式化:
new_string = f'{s} {i}'
print(new_string)

或者只需:
print(f'{s} {i}')

6

format()方法可用于将字符串和整数连接起来:

print(s + "{}".format(i))

2
您可以使用 f-string
s = "string"
i = 95
print(f"{s}{i}")

0

假设您想在以下情况下连接字符串和整数:

for i in range(1, 11):
   string = "string" + i

你遇到了类型或连接错误。

最好的方法是像这样做:

for i in range(1, 11):
   print("string", i)

这将给你串联的结果,例如字符串1、字符串2、字符串3等。


-1
如果你只想打印,你可以这样做:
print(s, i)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接