2016-09-20 110 views
1

我想從推文的json objcet中提取文本字段並通過syntaxnet運行它。我正在用Python做這一切。Shell命令中的打印變量

我的代碼是:

import os, sys 
import subprocess 
import json 

def parse(text): 
    os.chdir("/var/www/html/alenza/hdfs/user/alenza/sree_account/sree_project/src/core/data_analysis/syntaxnet/models/syntaxnet") 
    #synnet_output = subprocess.check_output() 
    subprocess.call(["echo 'hello world' | syntaxet/demo.sh"], shell = True) 
    #print synnet_output 


for line in sys.stdin: 
    line1 = json.loads(line) 
    text = line1['avl_lexicon_text'] 
    print text 
    synnet_output = parse(text) 

現在,而不是在echo 'hello world'功能parse,我想呼應text那裏。那是我想喂text變量到syntaxnet/demo.sh文件。我試圖做subprocess.call(["echo text | syntaxet/demo.sh"], shell = True),但沒有奏效。我怎樣才能做到這一點?

回答

0

你可以使用字符串格式化%s和替代文本

def parse(text): 
    os.chdir("/var/www/html/alenza/hdfs/user/alenza/sree_account/sree_project/src/core/data_analysis/syntaxnet/models/syntaxnet") 
    #synnet_output = subprocess.check_output() 
    subprocess.call(["echo '%s' | syntaxet/demo.sh"%text], shell = True) 
    #print synnet_output 

如果你懷疑你的文字可能有單引號,那麼你就可以逃脫它:

text = text.replace("'", "\\'") 
+0

就像一個魅力。謝謝! – kskp

+0

另請參閱http://stackoverflow.com/a/39619413/874188 – tripleee