2016-09-20 3 views
1

트위터의 json objcet에서 텍스트 필드를 추출하여 구문 분석을 통해 실행하고 싶습니다. 나는 파이썬에서이 모든 것을하고있다.쉘 명령에서 변수 인쇄

내 코드는 다음과 같습니다 parse 기능에

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', 내가 거기 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