Python 使用特殊字符格式化字符串

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

下面的代码抛出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("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。好的建议和解决办法。正如我在文章中提到的,我试图避免创建额外的变量。但如果没有其他解决办法,我会同意这一点。