在 Python 中串联字符串和整数

在 Python 中说你有

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

会给你错误,所以你写

print s + str(i)

不会出错。

我认为这是处理 int 和 string 连接的一种相当笨拙的方法。

即使 Java 也不需要显式强制转换为 String 来进行这种连接。 有没有更好的方法来实现这种连接,即不使用 Python 进行显式强制转换?

505333 次浏览

字符串格式化,使用新样式的 .format()方法(使用默认的 。格式()提供) :

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

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

 '%s%d' %(s, i)

在上面的两个示例中,连接的两个项之间都有 没有空格。如果需要空间,可以简单地将其添加到格式字符串中。

这些提供了一个 很多的控制和灵活性,关于如何连接项目,它们之间的空间等。有关 格式规范如下的详情。

现代字符串格式:

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

没有字符串格式:

>> print 'Foo',0
Foo 0

Python 是一种有趣的语言,尽管通常有一两种“显而易见”的方法来完成任何给定的任务,但灵活性仍然存在。

s = "string"
i = 0


print (s + repr(i))

上面的代码片段是用 Python3语法编写的,但是 打印之后的圆括号一直是允许的(可选) ,直到版本3强制使用它们。

Format ()方法可用于连接字符串和整数:

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

如果只想打印,可以这样做:

print(s, i)

在 Python 3.6和更新的版本中,你可以这样格式化它:

new_string = f'{s} {i}'
print(new_string)

或者只是:

print(f'{s} {i}')

让我们假设您想在下面这种情况下连接一个字符串和一个整数:

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

您将得到一个类型或连接错误。

最好的方法是这样做:

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

这将给出连接的结果,如字符串1、字符串2、字符串3等。

你也可以使用 F 弦

s = "string"
i = 95
print(f"{s}{i}")