Jupyter Notebook中带有.format的文本

时间:2018-11-25 11:59:33

标签: python format jupyter

我正在尝试使用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()

2 个答案:

答案 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}}];'''