值错误:在 python 中执行字符串格式化时字段名称中出现意外'{'



我正在尝试运行以下查询。

i=['qwerty12345']
%python
query='''select 
column1,column2
from table
where hit_id='{hit_id}'
and device_id='{'{AB14233Q-2E60}'}'
'''.format(hit_id=i)
result= sqlContext.sql(query)

但是我得到ValueError:字段名中意外的"{"我的device_id是'{AB14233Q-2E60}'我遗漏了什么?我真的很感激你能提供的任何帮助。

以防这对其他人有帮助:我的一个格式占位符不小心有一个错误的右括号,所以检查你的括号是否对称。

错误:{item1} {item2} {item3)

------------------------------------^

正确:{item1} {item2} {item3}

format方法将每个{}作为写入占位符的尝试。

如果不是这种情况,您必须像这样转义它们{{,}}

所以,你可以这样重写代码:
i=['qwerty12345']
%python
query='''select 
column1,column2
from table
where hit_id='{hit_id}'
and device_id='{{'{{AB14233Q-2E60}}'}}'
'''.format(hit_id=i)
result= sqlContext.sql(query) 

必须转义device_id

中的引号
'''select 
column1,column2
from table
where hit_id='{hit_id}'
and device_id='{'{AB14233Q-2E60}'}'
'''

您需要一个转义序列来解决这个问题。试着添加双花括号,像这样{{ }}:

query= '''select 
column1,column2
from table
where hit_id='{hit_id}'
and device_id='{{'{{AB14233Q-2E60}}'}}'
'''.format(hit_id=i)

这应该能奏效

最新更新