新样式格式说明符抛出标记化错误
New style format specifier throwing tokenization error
我在变量 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'
不确定这里出了什么问题。有人可以帮忙理解吗?
你需要用 {{
和 }}
转义你的其他大括号 - 否则 python 格式分词器想要理解模式。 (仅在 python3... 中测试)
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")
假设您不想用作格式化选项的大括号前面总是有多个空格(格式大括号前面最多有一个空格),您可以替换这些:
import re
# with your original jss
sanitized = re.sub('(\s\s+){', r'{{', jss)
sanitized = re.sub('(\s\s+)}', r'}}', sanitized)
print(sanitized.format("1234"))
...可能会有更合理的正则表达式来满足您的需要...
我在变量 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'
不确定这里出了什么问题。有人可以帮忙理解吗?
你需要用 {{
和 }}
转义你的其他大括号 - 否则 python 格式分词器想要理解模式。 (仅在 python3... 中测试)
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")
假设您不想用作格式化选项的大括号前面总是有多个空格(格式大括号前面最多有一个空格),您可以替换这些:
import re
# with your original jss
sanitized = re.sub('(\s\s+){', r'{{', jss)
sanitized = re.sub('(\s\s+)}', r'}}', sanitized)
print(sanitized.format("1234"))
...可能会有更合理的正则表达式来满足您的需要...