如何将字符串作为变量插入到字符串中? [重复]

问题描述 投票:0回答:7

我正在尝试创建一个程序,我想做的一件事就是向字符串添加变量,如下所示。

EnemyHealth = 0  

EnemyIs = 'dead'

print("The Enemy's health is %d. The Enemy is %d." % (EnemyHealth,EnemyIs)

但是每次我尝试它都不会让我使用字符串作为变量之一。如何将变量字符串插入另一个字符串?

附注我正在使用 python 3.7.0

python string python-3.x variables
7个回答
22
投票

我知道有 4 种方法可以在 python (Python 3) 上实现此目的:

1)串联:

您可以使用

+
连接 2 个字符串,但只能连接字符串类型数据,这意味着非字符串类型数据需要使用
str()
函数转换为字符串。例如:

print("The Enemy's health is " + str(EnemyHealth) + ". The Enemy is " + EnemyIs + ".") 
# output = "The Enemy's health is 0. The Enemy is dead." 

2) 利用 Python 3 的

print()
函数可以接受多个参数:

这里的

print()
语句与上面的连接语句类似,除了我使用
+
连接的地方,您需要将其替换为
,
。使用这个的好处是,不同的数据类型会自动转换为字符串,即不再需要
str()
函数。例如:

print("The Enemy's health is ", EnemyHealth, ". The Enemy is ", EnemyIs, ".") 
# output = "The Enemy's health is 0. The Enemy is dead." 

3)使用字符串替换方法

您的代码不起作用的原因是因为

%d
意味着您将用整数替换它,因此为了使您的代码正常工作,因为存储在变量
EnemyIs
上的字符串需要替换为使用的
%s
声明它将被替换为字符串。因此,要解决您的问题,您需要执行以下操作:

print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth, EnemyIs)) 
# output = "The Enemy's health is 0. The Enemy is dead." 

4)Python字符串的

format()
方法(这是最好的使用方法)

这是Python中所有字符串的内置方法,它允许您轻松地用任何变量替换Python字符串中的占位符

{}
。与上面的解决方案 3 不同,这个
format()
方法不需要您将不同的数据类型表达或转换为字符串,因为它会自动为您执行此操作。例如,要使打印语句正常工作,您可以执行以下操作:

print("The Enemy's health is {}. The Enemy is {}.".format(EnemyHealth, EnemyIs)) 

print("The Enemy's health is {0}. The Enemy is {1}.".format(EnemyHealth, EnemyIs)) 

# output = "The Enemy's health is 0. The Enemy is dead." 

更新:

5) F弦

从 python 3.6+ 开始,您现在还可以使用 f 字符串来替换字符串中的变量。这个方法和上面描述的

.format()
方法类似,在我看来是对
str.format()
方法更好的升级。要使用此方法,您只需在定义字符串时在开始引号之前声明
f
,然后在字符串中使用格式
{[variable name goes here]}
即可实现此方法。例如,要使打印语句起作用,使用此方法,您可以执行以下操作:

print(f"The Enemy's health is {EnemyHealth}. The Enemy is {EnemyIs}.")
# output = "The Enemy's health is 0. The Enemy is dead." 

正如您通过使用此方法所看到的,

variable name
直接在大括号
{}
内实例化。


5
投票

避免在 Python3.x 中使用 % 格式说明符

来自文档:

旧的格式样式最终将从语言中删除,通常应使用 str.format()。

有一些简单的方法可以做到这一点,请检查下面的代码:

print("The Enemy's health is {} The Enemy is {}".format(EnemyHealth, EnemyIs)

print("The Enemy's health is {0} The Enemy is {1}".format(EnemyHealth, EnemyIs)

print("The Enemy's health is {EnemyHealth} The Enemy is {EnemyIs}".format(EnemyHealth=EnemyHealth, EnemyIs=EnemyIs)

3
投票

您的代码的问题是您使用

%d
作为第二个参数。
%d
适用于整数,而
%s
适用于字符串。您可以通过更改为
%s
来使其工作,如下所示:

EnemyHealth = 0
EnemyIs = 'dead'
print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth, EnemyIs))

输出

The Enemy's health is 0. The Enemy is dead.

另一种方法是使用这样的格式函数:

print("The Enemy's health is {}. The Enemy is {}.".format(EnemyHealth, EnemyIs))

有关字符串格式的更多信息可以在此处找到。


2
投票

字符串对象的格式说明符是

%s
。所以你的代码应该是:

EnemyHealth = 0   
EnemyIs = 'dead'
print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth,EnemyIs))

2
投票

您也可以使用

print("The Enemy's health is %d.  The Enemy is %s." % (EnemyHelath, EnemyIs))
,但建议使用
print("The Enemy's health is {}.  The Enemy is {}.".format(EnemyHealth,EnemyIs))


2
投票

使用 print 和

format
,它会让你的代码看起来不错

print("The Enemy's health is {} The Enemy is {}".format(str(EnemyHealth),EnemyIs)

1
投票

那是因为第一个字符串中的

%d
需要一个整数变量来代替它。您想要的是字符串的
%s

即:

print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth,EnemyIs)

(另请记住,

%f
用于浮点数,您可以使用一些技巧,例如
%2.4f
将数字1.234567写为01.2346)

© www.soinside.com 2019 - 2024. All rights reserved.