我正在尝试使用Jupyter Notebook中的以下代码。但是,当我运行它时,它将在具有text.format的行上引发错误。我无法以任何方式解决此错误……任何人都不知道可能会发生什么?
disp_med = 69.658
perf_med = 85.6974
qual_med = 95.654
oee_16 = (disp_med * perf_med * qual_med) / 10000
arq_escrita = open('oee_2016.txt', 'w')
texto = '''var data=[{"category":"Indice OEE","num":{0}, "num2": 100},
{"category":"Qualidade","num":{1}, "num2": 100},
{"category":"Performance","num":{2}, "num2": 100},
{"category":"Disponibilidade","num":{3}, "num2": 100}];'''
texto = texto.format('{:.0f}'.format(oee_16),'{:.0f}'.format(qual_med), '{:.0f}'.format(perf_med), '{:.0f}'.format(disp_med))
arq_escrita.write(texto)
arq_escrita.close()
答案 0 :(得分:1)
似乎您的错误如下:
Traceback (most recent call last):
File "file.py", line 11, in <module>
texto = texto.format('{:.0f}'.format(oee_16),'{:.0f}'.format(qual_med), '{:.0f}'.format(perf_med), '{:.0f}'.format(disp_med))
KeyError: '"category"'
您不能在提供的文本中使用格式,因为它无法找出{something}
中的哪些要格式化,哪些会被忽略(因此,它希望您为“类别”提供一个值),请考虑通过实际创建您在python中提供的数据来生成结果,然后使用json库将其转换为文本。
评论中提供的更好的解决方案:
将不需要更换的零件加倍({}
,将{{}}
转义。
答案 1 :(得分:0)
问题在于您的字符串包含括号({
/ }
)作为json的一部分,因此format
认为应将其替换。您可以通过将这些花括号替换为双花括号{{
/ }}
来解决此问题:
texto = '''var data=[{{"category":"Indice OEE","num":{0}, "num2": 100\}},
{{"category":"Qualidade","num":{1}, "num2": 100}},
{{"category":"Performance","num":{2}, "num2": 100}},
{{"category":"Disponibilidade","num":{3}, "num2": 100}}];'''