Ich habe die Ergebnisse von Google Speech in einer Variablen erhalten
data = {'name': '1235433175192040985', 'metadata': {'@type': 'type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata', 'progressPercent': 100, 'startTime': '2018-04-11T12:56:58.237060Z', 'lastUpdateTime': '2018-04-11T12:57:44.944653Z'}, 'done': true, 'response': {'@type': 'type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse', 'results': [{'alternatives': [{'transcript': 'hi how are you', 'confidence': 0.92438406}]}, {'alternatives': [{'transcript': 'How are you doing?', 'confidence': 0.9402676}]}]}}
json_dict = json.loads(data)
Darauf wirft es Fehler
JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
Für den Rest des Parsens habe ich geschrieben
for result in json_dict["response"]["results"]:
if "alternatives" in result:
alternatives = result["alternatives"][0]
if "confidence" in alternatives:
print(alternatives["confidence"])
if "transcript" in alternatives:
print(alternatives["transcript"])
Was mache ich falsch?
3 Antworten
Das Diktat benötigt keine weiteren json-Methoden, Sie können so wie es ist damit arbeiten.
for result in data["response"]["results"]:
if "alternatives" in result:
alternatives = result["alternatives"][0]
if "confidence" in alternatives:
print(alternatives["confidence"])
if "transcript" in alternatives:
print(alternatives["transcript"])
Ergibt diese Ausgabe:
0.92438406
hi how are you
0.9402676
How are you doing?
Der JSON-Parser in Python erwartet, dass Ihr Blob doppelte Anführungszeichen verwendet, da dies der JSON-Standard ist.
{
"name": "John Doe"
}
Sie können die einfachen Anführungszeichen durch doppelte Anführungszeichen ersetzen, wie unter dieser Antwort erläutert.
Ich bin mir jedoch ziemlich sicher, dass das Problem an anderer Stelle gelöst werden kann, da die Google-API höchstwahrscheinlich gültiges JSON in ihren Antworten verwendet. Wie analysieren Sie die Antwort von der Google-API?
Das Problem in Ihrem Snippet ist, dass Sie ein Diktat an json.loads übergeben. json.loads dekodiert json zum Diktieren, so dass es redundant und falsch ist. Lesen Sie die Dokumente
Verwandte Fragen
Verknüpfte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.