String 新样式格式说明符引发标记化错误
变量jss中有以下字符串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 = '''
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"))