1

在我的 Java 应用程序中,我想使用 Jython 来解释 Python 代码。
所以我初始化 Jython 如下:

PySystemState.initialize();
PythonInterpreter jython = new PythonInterpreter();

然后我想像这样测试它:

jython.eval("out = ''");
jython.eval("out += 'Test1\n'");
jython.eval("out += 'Test2\n'");
System.out.println(jython.get("out").toString());

但是,第一个 eval 行会引发此错误:

  File "<string>", line 1
    out = ''
       ^
SyntaxError: mismatched input '=' expecting EOF

当我用exec而不是eval尝试它时,我得到了这个错误:

  File "<string>", line 2
    '
    ^
SyntaxError: no viable alternative at character '''

有什么想法我在这里做错了吗?

PS:我正在使用 jython-2.5.4-rc1

4

2 回答 2

2

您需要确保具备以下条件

  • 声明一个out变量
  • 因为您使用的是 Java,所以请转义特殊字符,例如\\n
  • 使用exec而不是eval

这将产生:

PythonInterpreter jython = new PythonInterpreter();
jython.set("out", new PyString());
jython.exec("out = ''");
jython.exec("out += 'Test1\\n'");
jython.exec("out += 'Test2\\n'");
System.out.println(jython.get("out").toString());
于 2013-04-03T00:04:33.063 回答
0

您应该使用exec来执行语句。eval评估并返回一个PyObject

于 2013-04-02T23:47:59.223 回答