2016-06-26 20 views
1

Problem Datei:Auffinden eine dynamische Zeichenkette in einem Text

Hallo, ich habe vor kurzem in meiner Programmierung Bemühungen zu kämpfen. Ich habe es geschafft, die Ausgabe unten von Google Speech to Text zu erhalten, aber ich kann nicht herausfinden, wie Daten von diesem Block gezeichnet werden.

Auszug 1:

[VoiceMain]: Erfolgreich initialisiert

{ "Ergebnis": []} { "Ergebnis": [{ "Alternative": [{ "Transkript":“ Hallo "," Vertrauen ": 0.46152416}, {" Transkript ":" wie tief "}, {" Transkript ":" wie lo "}, {" Transkript ":" wie lange "}, {" Transkript ":" Polo "}]," final ": true}]" result_index ": 0}

[VoiceMain]: Erfolgreich initialisiert

{"Ergebnis": []} {"Ergebnis": [{"Alternative": [{"Transkript": "Hallo"}, {"Transkript": "Wie lange"}, {"Transkript": "Wie low "}, {" Transkript ":" Howlong "}]," final ": true}]" result_index ": 0}

Ziel:

Mein Ziel ist es, die Zeichenfolge zu extrahieren" hallo "(ohne Anführungszeichen) aus dem ersten Transkript jedes Blocks und setze ihn gleich einer Variablen. Das Problem entsteht, wenn ich nicht weiß, was der Satz sein wird. Anstelle von "Hallo" kann die Phrase eine Zeichenfolge beliebiger Länge sein. Auch wenn es sich um eine andere Zeichenkette handelt, möchte ich sie dennoch auf dieselbe Variable setzen, auf die die Phrase "Hallo" gesetzt worden wäre.

Außerdem möchte ich die Nummer nach dem Wort "Vertrauen" extrahieren. In diesem Fall ist es 0.46152416. Der Datentyp spielt keine Rolle für die Konfidenzvariable. Die Vertrauensvariable scheint schwieriger aus den Blöcken zu extrahieren, da sie vorhanden sein kann oder nicht. Wenn es nicht vorhanden ist, muss es ignoriert werden. Wenn es jedoch vorhanden ist, muss es erkannt und als Variable gespeichert werden.

Bitte beachten Sie auch, dass dieser Textblock in einer Datei namens "CurlOutput.txt" gespeichert ist.

Alle Hilfe oder Ratschläge zur Lösung dieses Problems wird sehr geschätzt.

Antwort

0

Sie könnten dies mit Regex tun, aber dann nehme ich an, dass Sie dies als ein Dict später in Ihrem Code verwenden möchten. Also hier ist ein Python-Ansatz, um dieses Ergebnis als ein Wörterbuch zu erstellen.

import json 

with open('CurlOutput.txt') as f: 
    lines = f.read().splitlines() 
    flag = '{"result":[]} ' 
    for line in lines: # Loop through each lin in file 
     if flag in line: # check if this is a line with data on it 
      results = json.loads(line.replace(flag, ''))['result'] # Load data as a dict 
      # If you just want to change first index of alternative 
      # results[0]['alternative'][0]['transcript'] = 'myNewString' 

      # If you want to check all alternative for confidence and transcript 
      for result in results[0]['alternative']: # Loop over each alternative 
       transcript = result['transcript'] 
       confidence = None 
       if 'confidence' in result: 
        confidence = result['confidence'] 
       # now do whatever you want with confidence and transcript. 
+0

Ausgezeichnete Antwort! Danke für die Hilfe, das hat super funktioniert! Das Problem war, dass ich Json noch nicht verstanden habe. Hoffentlich hilft das jedem anderen mit einem ähnlichen Problem. – supermitchell2