Ich versuche, ein Protokoll mit der Parse-Bibliothek von Python zu analysieren. (https://pypi.python.org/pypi/parse) Für meine Zwecke muss ich die Typbezeichner in der Formatzeichenfolge verwenden, jedoch können einige der Daten, die ich analysiere, eine Kombination mehrerer dieser Typen sein.Verwenden von Python Parse, um eine Zeichenfolge aus Zahlen, Buchstaben, Leerzeichen und Symbolen zu erhalten
Zum Beispiel:
"4.56|test-1 Cool|dog"
I die Nummer der vorderen analysieren kann das Format-Spezifizierer g (allgemeine Zahl) und W (Wort) für "dog" am Ende verwendet wird. Der mittlere Ausdruck "test-1 Cool" ist jedoch eine Zahl, Buchstaben, Leerraum und ein Strich. Die Verwendung eines der Spezifizierer alleine scheint nicht zu funktionieren (habe W, w, s und S versucht). Ich möchte diesen Ausdruck als String extrahieren.
Ohne das Problem Phrase, würde ich dies nur tun:
test = "|4.56|dog|"
result = parse('|{number:g}|{word:w}|', test)
EDIT: Ich habe einen gewissen Erfolg hatte unten einen benutzerdefinierten Typ Umwandlung gezeigt mit:
def SString(string):
return string
test = "|4.56|test-1 Cool|dog|"
result = parse('|{number:g}|{other:SString}|{word:w}|', test, dict(SString=SString))
Das wäre großartig, aber ich brauche wirklich den Typspezifizierer um den vom Benutzer gewünschten Typ zu bestimmen, da die Analysezeichenfolge von einem Benutzer eingegeben wird. Ich verwende derzeit eine benutzerdefinierte Typumwandlung und es scheint zu funktionieren, ok, ich werde es zu meinem ursprünglichen Beitrag hinzufügen –
@SethDavis überprüfen Sie meine Antwort jetzt – RaminNietzsche
Vielen Dank! Es sieht zwar so aus, als ob die re.match-Zeile dieses spezifische Format erwartet, obwohl es in Wirklichkeit mehrere verschiedene Formate geben könnte, die Leerzeichen oder Zahlen enthalten oder nicht enthalten. "test 1-cool" "cool1-test" "cool-test" sollte alles gleich funktionieren und nur das als String zurückgeben. Ich möchte einfach das Ganze als String, mit einem Typspezifizierer, der mir sagt, dass ich eine Zeichenfolge erwarten soll. Ich glaube, die benutzerdefinierte Typumwandlung funktioniert gut dafür, aber es ist großartig, in die re-Bibliothek eingeführt zu werden –