【发布时间】:2019-12-05 04:03:45
【问题描述】:
您好,我正在尝试将数组从 java(jar 文件)返回到 Python,但只返回数组类型字符串:
"['DIEGO ALBERTO AVILA', '', 'ACTIVO', 'N', 'OTRO', 'CEVALLOS', 'S/N','MOLINA']"
我如何从 python 调用 java:
import shlex, subprocess
import json
PARAMETRO = "1804464194001"
JAVA_CMD = 'java'
JAR_PATH = "catastro.jar"
command = [
JAVA_CMD,
'-jar',
JAR_PATH,
PARAMETRO
]
p = subprocess.Popen(
command,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
#shell=True
)
result = p.communicate()[0]
print(result)
Java 代码:
ArrayList<String> result = new ArrayList<String>();
....
try {
PreparedStatement st = conn.prepareStatement(query);
ResultSet rs = st.executeQuery();
while(rs.next()) {
//data resultset
String razonSocial = rs.getString("RAZON_SOCIAL");
String nombreComercial = rs.getString("NOMBRE_COMERCIAL");
String estadoContribuyente = rs.getString("ESTADO_CONTRIBUYENTE");
String obligado = rs.getString("OBLIGADO");
String tipoContribuyente = rs.getString("TIPO_CONTRIBUYENTE");
String calle = rs.getString("CALLE");
String numero = rs.getString("NUMERO");
String interseccion = rs.getString("INTERSECCION");
//data ArrayList
result.add(razonSocial);
result.add(nombreComercial);
result.add(estadoContribuyente);
result.add(obligado);
result.add(tipoContribuyente);
result.add(calle);
result.add(numero);
result.add(interseccion);
//return result
System.out.println(result);
}
conn.close();
rs.close();
st.close();
} catch(SQLException e) {
e.printStackTrace();
}
在这种情况下,我尝试使用 JSON 但返回相同类型的字符串而不是数组。 也许有人建议。
更新
我试试这个(在 python 上):
json.loads(result)
或者这个:
ast.literal_eval(result)
当我打印这个时:
print(type(ast.literal_eval(result)))
得到这个错误:
文件“invoque.py”,第 23 行,在 print(type(ast.literal_eval(ini_list))) 文件“/usr/lib64/python2.7/ast.py”,第 49 行,在 literal_eval 中 node_or_string = parse(node_or_string, mode='eval') File "/usr/lib64/python2.7/ast.py", line 37, in parse 返回编译(源,文件名,模式,PyCF_ONLY_AST)文件“”,第1行 [LOACHAMIN AVILA DIEGO ALBERTO, , ACTIVO, N, PERSONAS NATURALES, MANUEL CAN, S/N, 巴西]
但得到相同类型的“字符串”谢谢..!!
谢谢..!!
【问题讨论】:
-
你能发布
print(type(ast.literal_eval("['DIEGO ALBERTO AVILA', '', 'ACTIVO', 'N', 'OTRO', 'CEVALLOS', 'S/N','MOLINA']") ))的输出吗 -
好的,我发布这个印刷品..!!