String 新样式格式说明符引发标记化错误

String 新样式格式说明符引发标记化错误,string,python-2.7,string-formatting,format-specifiers,String,Python 2.7,String Formatting,Format Specifiers,变量jss中有以下字符串 jss = ''' Java.perform( function() { var item = Java.use("java.util.Random"); console.log("HOOKING random"); item.nextInt.overload("int").implementation = function(a) { var ret = this.nextInt(a); return

变量jss中有以下字符串

jss = '''
Java.perform(
  function()
  {
    var item = Java.use("java.util.Random"); 
    console.log("HOOKING random");
    item.nextInt.overload("int").implementation = function(a)
    {
      var ret = this.nextInt(a); 
      return {0};
    }
  }
);
'''.format("1234")
我试图使用一个格式说明符来简单地传递一些值(在本例中为“1234”)

当我尝试在iPython中运行此功能时,会出现以下错误:

ERROR:root:An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line string', (1, 0))

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-1-a900f760c449> in <module>()
     12   }
     13 );
---> 14 '''.format("1234")

KeyError: '\n    var item = Java'
ERROR:root:标记输入时发生意外错误
以下回溯可能已损坏或无效
错误消息是:('EOF in multi line string',(1,0))
---------------------------------------------------------------------------
KeyError回溯(最近一次呼叫最后一次)
在()
12   }
13 );
--->14''格式(“1234”)
KeyError:“\n var item=Java”

不确定这里出了什么问题。有人能帮你理解吗?

你需要用
{
}
来摆脱其他大括号-否则python格式的标记器想要理解这个模式。(仅在蟒蛇3中测试…)

假设不希望用作格式选项的大括号前始终有多个空格(格式大括号前最多有一个空格),则可以替换这些选项:

import re 

# with your original jss
sanitized = re.sub('(\s\s+){', r'\1{{', jss)
sanitized = re.sub('(\s\s+)}', r'\1}}', sanitized)

print(sanitized.format("1234"))

…可能有更合理的正则表达式来满足您的需要…

太棒了。谢谢你。做我的工作!
import re 

# with your original jss
sanitized = re.sub('(\s\s+){', r'\1{{', jss)
sanitized = re.sub('(\s\s+)}', r'\1}}', sanitized)

print(sanitized.format("1234"))