我正在研究一个项目,我正在将字符串传递给此NLP API,该API返回字符串情感分析的JSON对象。我承认我是一个Python新手:
http://text-processing.com/docs/sentiment.html
通过命令行调用API的文档很简单。当我打开终端并运行命令时,它工作正常。
curl -d "text=great" http://text-processing.com/api/sentiment/
在终端上运行该命令会产生:
{"probability": {"neg": 0.59309571705919506, "neutral": 0.5403849950008478, "pos": 0.40690428294080488}, "label": "neutral"}
我试图在Python中找到一种方法,使用相同的命令进行终端调用,捕获JSON对象,解码并在我的代码中使用它。
到目前为止,我发现使用以下代码可以在Python中使用:
import os
os.system('curl -d "text=great" http://text-processing.com/api/sentiment/')
但是,当我在Python文件中运行此行时,它会打印出JSON对象。如何将输出保存到变量,然后转储字符串并在我的代码中使用JSON结果?
当我尝试:
import os
sentiment = os.system('curl -d "text=great" http://text-processing.com/api/sentiment/')
它忽略了我的变量赋值,并继续打印出JSON对象。
有什么建议吗?
答案 0 :(得分:2)
有几种方法可以做到这一点。与您的代码最相似的方法是使用subprocess
包来调用操作系统。
import subprocess
process = subprocess.Popen(['curl', '-d', '"text=great"',
'http://text-processing.com/api/sentiment/'],
stdout=subprocess.PIPE)
stuff, err = process.communicate()
另一种方法是使用python包来发布帖子请求。
import requests
response = requests.post(url='http://text-processing.com/api/sentiment/',
data="text=great").content
stuff = response.content