Python 使用特殊字符格式化字符串
下面的代码抛出KeyError。有什么想法吗?我试着把牙套加倍,但还是没有成功Python 使用特殊字符格式化字符串,python,Python,下面的代码抛出KeyError。有什么想法吗?我试着把牙套加倍,但还是没有成功 v = "My Name='{x[1].name}'" p = "x[1].name" pv = 'test' v = v.format(p=pv) print(v) 我也不想创建另一个变量,希望对v变量进行格式化 预期产量 My Name='test' 不确定您想用p=pv做什么,但下面是string.format()的工作方式 pv = 'test' print(&qu
v = "My Name='{x[1].name}'"
p = "x[1].name"
pv = 'test'
v = v.format(p=pv)
print(v)
我也不想创建另一个变量,希望对v
变量进行格式化
预期产量
My Name='test'
不确定您想用p=pv做什么,但下面是string.format()的工作方式
pv = 'test'
print("My Name='{}'".format(pv))
# My Name='test'
由于使用
x[1].name对您来说似乎很重要,您可以尝试:
y类:
名称='test'
v=“我的名字={p}”
x=[0,y]
v=v.format(p=x[1].名称)
印刷品(五)
如果确实必须使用{x[1].name}
作为格式标记,可以创建一个合适的对象来代替x
v = "My Name='{x[1].name}'"
class Foo:
name = 'test'
print(v.format(x=[Foo,Foo]))
输出:
My Name='test'
这里的x
是一个列表,x[1]
是类Foo,x[1]。name
是字符串“test”,根据需要。尝试查看My name='test'
我必须使用v
和该变量的格式。我不想为此操作创建另一个变量。我无法更改“我的名字='{x[1].Name}'”
,因此我只有此变量的工作格式。这是来自不同的系统。@dcu你总是可以做v=v.replace(“x[1].name”,“p”)
@Tomerikoo我的选择是使用格式而不是替换。@dcu我的意思是:v=v.replace(“x[1].name”,“p”)
然后你可以做:v=v.format(p='test')
谢谢@Tomerikoo。好的建议和解决办法。正如我在文章中提到的,我试图避免创建额外的变量。但如果没有其他解决办法,我会同意这一点。