更新時間:2018-11-09 來源:黑馬程序員 瀏覽量:
1.為什么用java調(diào)用python
2.本程序環(huán)境要求
3.程序書寫
3.1.java基本代碼書寫
4.程序結(jié)果
5.總結(jié)
1.為什么用java調(diào)用python
java在web程序具有很大的優(yōu)勢,然而在科學(xué)計算,機(jī)器學(xué)習(xí)等領(lǐng)域中不如python,使用java調(diào)用python就是為了能夠使得一個問題能夠更好的解決。
2.本程序環(huán)境要求
java開發(fā)環(huán)境:eclipse
python開發(fā)環(huán)境:python3.6 - spyder
python包的要求:wordcloud(安裝方式:http://blog.csdn.net/meiqi0538/article/details/79535513)
3.程序書寫
3.1.java基本代碼書寫
創(chuàng)建一個java工程我這里是命名為:TestCollection01;在src目錄下載創(chuàng)建一個包:cn.python.test;創(chuàng)建一個java文件:demo01.java。
java代碼如下:
package cn.python.test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class demo01 {
public static void main(String[] args) {
String text="呢。\r\n" +
" 他重新經(jīng)過安檢,回到了候機(jī)大廳。大廳里仍是一片嘈雜。他強(qiáng)迫自己鎮(zhèn)靜,在飲水機(jī)前喝了幾口水,找了一處空椅子坐下,閉目養(yǎng)神。已經(jīng)落網(wǎng)的趙德漢的形象適時浮現(xiàn)在眼前,他禁不住又沉浸到了對趙德漢的回憶中。昨天晚上,當(dāng)此人捧著大海碗吃炸醬面時,老舊的木門“吱呀”一聲開了,他代表命運(yùn)來敲這位貪官的家門了。\r\n" +
" 貪官一臉憨厚相,乍看上去,不太像機(jī)關(guān)干部,倒像個剛";
//定義個獲取結(jié)果的變量
String result="";
try {
//調(diào)用python,其中字符串?dāng)?shù)組對應(yīng)的是python,python文件路徑,向python傳遞的參數(shù)
String[] strs=new String[] {"python","E:\\Python\\code\\python_BaseLearn\\Jieba\\test1.py",text};
//Runtime類封裝了運(yùn)行時的環(huán)境。每個 Java 應(yīng)用程序都有一個 Runtime 類實例,使應(yīng)用程序能夠與其運(yùn)行的環(huán)境相連接。
//一般不能實例化一個Runtime對象,應(yīng)用程序也不能創(chuàng)建自己的 Runtime 類實例,但可以通過 getRuntime 方法獲取當(dāng)前Runtime運(yùn)行時對象的引用。
// exec(String[] cmdarray) 在單獨(dú)的進(jìn)程中執(zhí)行指定命令和變量。
Process pr = Runtime.getRuntime().exec(strs);
//使用緩沖流接受程序返回的結(jié)果
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream(),"GBK"));//注意格式
//定義一個接受python程序處理的返回結(jié)果
String line=" ";
while((line=in.readLine())!=null) {
//循環(huán)打印出運(yùn)行的結(jié)果
result+=line+"\n";
}
//關(guān)閉in資源
in.close();
pr.waitFor();
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("python傳來的結(jié)果:");
//打印返回結(jié)果
System.out.println(result);
}
}
python代碼如下:
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 20 22:35:03 2018
@author: piqia
"""
import sys
import jieba
#添加需要自定以的分詞, 這里是使用的jieba分詞,并且這里使用的文本為人民的名義,需要為分詞庫添加一些分詞
jieba.add_word("侯亮平")
jieba.add_word("沙瑞金")
jieba.add_word("趙東來")
jieba.add_word("京州市")
#定義個函數(shù)式用于分詞
def jiebaclearText(text):
#定義一個空的列表,將去除的停用詞的分詞保存
mywordList=[]
#進(jìn)行分詞
seg_list=jieba.cut(text,cut_all=False)
#將一個generator的內(nèi)容用/連接
listStr='/'.join(seg_list)
#對默認(rèn)模式分詞的進(jìn)行遍歷,去除停用詞
for myword in listStr.split('/'):
mywordList.append(myword)
return '/ '.join(mywordList)
def mathTest():
sum=0
for i in range(1,11):
sum+=i
print("這是1-10累加和的第{0}個結(jié)果{1}".format(str(i),str(sum)))
if __name__=="__main__":
for i in range(1,len(sys.argv)):
#獲取系統(tǒng)傳來的參數(shù)
text=sys.argv
text1=jiebaclearText(text)
print(text1)
mathTest()
4.程序結(jié)果
作者:黑馬程序員人工智能+Python培訓(xùn)學(xué)院
首發(fā):http://python.itheima.com/