Ich kann keinen Standard -JSON -Parser verwenden, da ich mit .JBeam -Dateien arbeite, die auf JSON basieren, aber ein benutzerdefiniertes Format folgen, das intern von Beamng verwendet wird. Diese Dateien enthalten eindeutige Formatierungsregeln, die Standard -JSON -Parsers scheitern lassen, z. Die Aufgabe, die ich zu erledigen versuche, ist relativ einfach: Ersetzen Sie die Eigenschaft der Knoten durch einen neuen Text in einem bestimmten Format, während die Gesamtformatierung der Originaldatei erhalten bleibt (was ziemlich groß ist, obwohl ich nur benutze Ein vereinfachtes Beispiel hier). Die Verwendung eines Standard -JSON -Parsers verändert jedoch auch die Formatierung anderer Eigenschaften in der Datei. Ich habe versucht, die in diesem Thread beschriebene Lösung, aber sie wurde schnell umständlich, da ich alles einwickeln musste, um die Formatierung der Datei zu bewahren, was für eine so einfache Aufgabe keinen Sinn ergibt. Die ursprüngliche Formatierung ist wichtig, denn ohne sie haben Sie einen Albtraum -Lesart. JBEAM -Dateien, da sie die Anzahl der Zeilen erhöhen und die Lesbarkeit drastisch verringern würden. Letztendlich beschlossen, den einfachsten Ansatz zu verfolgen, indem er einen grundlegenden Textersatz verwendet hat. Selbst für einfache Operationen wie das Entfernen von Text habe ich jedoch Probleme. Ich weiß, dass diese Aufgabe leicht mit einem Bash -Skript behandelt werden könnte, aber ich bin gespannt, warum es sich als so schwierig mit Python erweist. Wie kann ich den Inhalt der Knoten in diesem Beispiel mit Python effizient entfernen?
Da ich den Python -JSON Loader nicht verwenden kann, weil JBeam nicht wirklich JSON ist und JSON neben JSON die Formatierung der Originaldatei ändert.
fehlgeschlagener Versuch 1: Regex < /h1>
Ich habe Regex ausprobiert, aber es funktioniert nicht: < /p>
Versuch 2: io.stringio
Ich habe versucht, io.stringio () wie in meinem Antwortbeitrag, aber nachdem ich die JBeam -Formatierung geändert habe, hat es nicht mehr funktioniert. Wirklich gut, wenn Sie den JBEAM -JSON gültig machen, aber leider wird auch die ursprüngliche Formatierung geändert. legitimes Problem, für das ich keine Lösungen finden kann.
Ich kann keinen Standard -JSON -Parser verwenden, da ich mit .JBeam -Dateien arbeite, die auf JSON basieren, aber ein benutzerdefiniertes Format folgen, das intern von Beamng verwendet wird. Diese Dateien enthalten eindeutige Formatierungsregeln, die Standard -JSON -Parsers scheitern lassen, z. Die Aufgabe, die ich zu erledigen versuche, ist relativ einfach: Ersetzen Sie die Eigenschaft der Knoten durch einen neuen Text in einem bestimmten Format, während die Gesamtformatierung der Originaldatei erhalten bleibt (was ziemlich groß ist, obwohl ich nur benutze Ein vereinfachtes Beispiel hier). Die Verwendung eines Standard -JSON -Parsers verändert jedoch auch die Formatierung anderer Eigenschaften in der Datei. Ich habe versucht, die in diesem Thread beschriebene Lösung, aber sie wurde schnell umständlich, da ich alles einwickeln musste, um die Formatierung der Datei zu bewahren, was für eine so einfache Aufgabe keinen Sinn ergibt. Die ursprüngliche Formatierung ist wichtig, denn ohne sie haben Sie einen Albtraum -Lesart. JBEAM -Dateien, da sie die Anzahl der Zeilen erhöhen und die Lesbarkeit drastisch verringern würden. Letztendlich beschlossen, den einfachsten Ansatz zu verfolgen, indem er einen grundlegenden Textersatz verwendet hat. Selbst für einfache Operationen wie das Entfernen von Text habe ich jedoch Probleme. Ich weiß, dass diese Aufgabe leicht mit einem Bash -Skript behandelt werden könnte, aber ich bin gespannt, warum es sich als so schwierig mit Python erweist. Wie kann ich den Inhalt der Knoten in diesem Beispiel mit Python effizient entfernen? [code]sample_jbeam = ''' { "partname": { "refNodes": [ ["ref:", "back:", "left:", "up:", "leftCorner:", "rightCorner:"], ["ref", "", "", "", "", ""] ], "nodes": [ ["id", "posX", "posY", "posZ"], ["ref", 0, 0, 0], ["b1", 1.0, 1.0, 1.0], ], "beams": [ ], } } ''' < /code> Ich möchte den Inhalt in "Knoten" entfernen, damit ich mit: < /p> übrig bin: < /p> { "partname": { "refNodes": [ ["ref:", "back:", "left:", "up:", "leftCorner:", "rightCorner:"], ["ref", "", "", "", "", ""] ], "nodes": [], "beams": [ ], } } [/code] Da ich den Python -JSON Loader nicht verwenden kann, weil JBeam nicht wirklich JSON ist und JSON neben JSON die Formatierung der Originaldatei ändert. fehlgeschlagener Versuch 1: Regex < /h1> Ich habe Regex ausprobiert, aber es funktioniert nicht: < /p> [code] pattern = r'("nodes":\s*)\[.*?\]' # cleaned_text = re.sub(pattern, r'\1[]', sample_jbeam, flags=re.DOTALL) cleaned_text = re.sub(r'"nodes": \[.*?\]', '"nodes": []', text, flags=re.DOTALL) print(cleaned_text) [/code] Versuch 2: io.stringio Ich habe versucht, io.stringio () wie in meinem Antwortbeitrag, aber nachdem ich die JBeam -Formatierung geändert habe, hat es nicht mehr funktioniert. Wirklich gut, wenn Sie den JBEAM -JSON gültig machen, aber leider wird auch die ursprüngliche Formatierung geändert. legitimes Problem, für das ich keine Lösungen finden kann.
Ich möchte vermeiden, JSON zu verwenden, da er einen Albtraum für eine einfache Aufgabe erstellt, bei der ich die Eigenschaft der Knoten mit einem Text mit einem bestimmten Format ersetzen wollte,...
Ich habe den PHP -Code, der alle Textbereicheingaben in einer Textdatei speichert, außer dass er alle konsequenten Nachrichten am letzten Buchstaben jeder Eingabe verschmilzt. Zum Beispiel, wenn der...
Ich habe den PHP -Code, der alle Textbereicheingaben in einer Textdatei speichert, außer dass er alle konsequenten Nachrichten am letzten Buchstaben jeder Eingabe verschmilzt. Zum Beispiel, wenn der...
Ich habe den PHP -Code, der alle Textbereicheingaben in einer Textdatei speichert, außer dass er alle konsequenten Nachrichten am letzten Buchstaben jeder Eingabe verschmilzt. Zum Beispiel, wenn der...
Ich habe den PHP -Code, der alle Textbereicheingaben in einer Textdatei speichert, außer dass er alle konsequenten Nachrichten am letzten Buchstaben jeder Eingabe verschmilzt. Zum Beispiel, wenn der...