如何将 json 响应中的特定文本用引号括起来?我在 Windows 8 中使用 Python 3.6.0

How do I enclose with quotes a specific text from a json response? I'm using Python 3.6.0 in Windows 8

如何用引号 ("s) 将来自 JSON 响应的特定文本括起来?我正在使用 Python 3.6.0.

我的脚本使用 Cloudsight 图像识别 API。这允许我上传图像并从 Cloudsight 获取该图像的描述。

现在,我要做的是使用 TTS 命令行工具说出 Cloudsight 的响应。我使用的 TTS 是 https://github.com/brookhong/tts

我的问题是这个 TTS 只能读出用引号括起来的字符串 ("s)。否则,它只会说出字符串中的最后一个单词。 到目前为止,这是我尝试过的:

image_results = get_results_for_token(image_token, api_key)  # This gets the JSON response from Cloudsight.
phrase = '"I think this shows "'
description =(image_results['name'])  # This is for getting the string that I want from the JSON response.
combination = phrase + description
import subprocess
subprocess.call('tts.exe -f 10 -v 4 '+combination, shell=False)  # Initialize TTS to speak out combination of phrase and description, which does not work as TTS only speaks out last word in description.
subprocess.call('tts.exe -f 10 -v 4 '+phrase, shell=False)  # Try to speak out the phrase first, which works because it's enclosed by quotes.
subprocess.call('tts.exe -f 10 -v 4 '+description, shell=False)  # Try to speak out description, which does not work. TTS only speaks out last word probably because the name string from the JSON response is not enclosed by quotes.
print(combination)  # This works. The script is parsing the text correctly.

即使脚本正确解析文本,TTS 也只会说出描述中的最后一个词。即使我使用两个字符串的组合,以及单独的字符串,就像我在上面的代码中所做的那样。

有什么问题吗?

引号环绕不是 tts 的特定问题,它只是关于参数 parsing/delimiting 当参数中有空格时。

当您没有将文本括在引号中时,可能会发生这种情况,即句子中的所有单词都作为参数传递给 tts,而程序只考虑最后一个单词。

要解决此问题,您不应那样使用 subprocess.call,而应使用参数列表语法,该语法在需要时使用 quotes/quotes 引号字符保护参数:

subprocess.call(['tts.exe','-f','10','-v','4',phrase])