Hallo zusammen,
ich hoffe, ich werde jetzt nicht auf der Stelle gelyncht, aber ich konnte leider nichts zu diesem Thema finden...
ich habe eine Textdatei, darin eine einzige ellen lange Zeile mit verschiedenen Informationen.
Aufbau ungefähr so :
<Values><Standardname_Variablenname1 Item="Standardname.Variablenname1" Type="4" Hex="420C0000" Value="35"
Dieses wiederholt sich immer wieder., wobei der "Standardname" immer gleich bleibt, der "Variablenname" und die Werte sich verändern.
Ich möchte nun eine Ausgabe bzw. eine neue Textdatei, in der ich nur noch die für mich wichtigen Informationen habe:
Item="Standardname.Variablenname1" Value="35"
Habt ihr Tipps für mich, mit welchen Befehlen ich dieses Ergebnis erzeugen kann?
Lg Lucas
Wörter aus .txt filtern und anzeigen(Python Neuling)
Mit "ungefaehr so" kann man nicht programmieren. Computer brauchen's schon sehr genau. Bitte zeig uns ein echtes Dokument dieser Art, nur dann kann man dir weiterfuehrende Tipps geben.
lynchen schreibt man mit y. Orthographie ist mir ueblicherweise schnurz, aber da zuckt das Augenlid
lynchen schreibt man mit y. Orthographie ist mir ueblicherweise schnurz, aber da zuckt das Augenlid

Grundsätzlich hoffe ich, dass es ein "Standardname" und kein "Standartname" ist. Eine Standarte ist etwas anderes.
"Aufbau ungefähr so" nützt nichts. Zeig den Anfang der Datei bis zum Ende der kompletten beiden ersten Datensätze. Und zwar so, wie er da steht und nicht "ungefähr" wie er da steht. Das sieht wie eine Markup-Language aus, und dafür gibt es ggf. fertige Module.
"Aufbau ungefähr so" nützt nichts. Zeig den Anfang der Datei bis zum Ende der kompletten beiden ersten Datensätze. Und zwar so, wie er da steht und nicht "ungefähr" wie er da steht. Das sieht wie eine Markup-Language aus, und dafür gibt es ggf. fertige Module.
Ich entschuldige mich natürlich auch für meine gruslige Rechtschreibung...
Ich kann die Datei leider nicht einfach 1:1 hier veröffentlichen, da ich sonst Probleme mit meinem Arbeitgeber bekommen könnte...
Ich habe allerdings nur die Variablennamen ersetzt, der Rest ist aus der Datei kopiert.
Ich möchte auch keine fertigen Lösungsvorschläge, sondern nur Ansätze. Ich habe aktuell dank Corona die Zeit mich mit neuen Sprachen zu beschäftigen und das versuche ich auch.
Ich kann die Datei leider nicht einfach 1:1 hier veröffentlichen, da ich sonst Probleme mit meinem Arbeitgeber bekommen könnte...
Ich habe allerdings nur die Variablennamen ersetzt, der Rest ist aus der Datei kopiert.
Ich möchte auch keine fertigen Lösungsvorschläge, sondern nur Ansätze. Ich habe aktuell dank Corona die Zeit mich mit neuen Sprachen zu beschäftigen und das versuche ich auch.
Nochmal: Es nützt nichts, wenn die Datei nur "ungefähr so" aussieht.
Änder halt alle spezifischen Daten in dem Beispiel. Aber wenn wir das Format nicht sehen, können wir nicht helfen.
Das sieht aus wie eine Markup-Language, aber um das zu sehen reichen nicht die ersten x Zeichen sondern zumindest ein kompletter Datensatz. Und der ist dort vorbei, wo der zweite beginnt.
Und welche Markup-Language das ist, steht meist am Anfang der der Datei.
Deshalb wäre der Anfang der Datei (der DATEI nicht des Datensatzes) bis zum Ende des ersten Datensatzes nötig.
Änder halt alle spezifischen Daten in dem Beispiel. Aber wenn wir das Format nicht sehen, können wir nicht helfen.
Das sieht aus wie eine Markup-Language, aber um das zu sehen reichen nicht die ersten x Zeichen sondern zumindest ein kompletter Datensatz. Und der ist dort vorbei, wo der zweite beginnt.
Und welche Markup-Language das ist, steht meist am Anfang der der Datei.
Deshalb wäre der Anfang der Datei (der DATEI nicht des Datensatzes) bis zum Ende des ersten Datensatzes nötig.
Zuletzt geändert von sparrow am Donnerstag 14. Mai 2020, 09:48, insgesamt 2-mal geändert.
sparrow hat es schon gesagt: die Antwort unterscheidet sich substantiell, abhaengig davon, wie konkret das Format aussieht. Wenn du Probleme befuerchtest, kannst du entweder mit deinem Arbeitgeber klaeren, ob eine Veroeffentlichung ok ist, oder die Daten unkentlich machen. Wobei du dabei natuerlich aufpassen musst, dass du das Format nicht verhackstueckst.
Wenn das nicht moeglich ist, dann gibt es eben die ueblichen Verdaechtigen - String-Operationen, XML-Bibliotheken, 3rd-Party-Libraries wenn es ein bekanntes Format ist. Was davon zutrifft - siehe oben.
Wenn das nicht moeglich ist, dann gibt es eben die ueblichen Verdaechtigen - String-Operationen, XML-Bibliotheken, 3rd-Party-Libraries wenn es ein bekanntes Format ist. Was davon zutrifft - siehe oben.
- DeaD_EyE
- User
- Beiträge: 1240
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Sieht nach XML aus.
Zeilenweise kannst du das Dokument nicht verarbeiten, du wirst dich mit XML auseinandersetzen müssen.
Hier mal ein Beispiel:
Wenn du keine Daten veröffentlichen kannst, bist du auf dich allein gestellt.
Beispiele wie man XML mit Python verarbeitet, gibt es aber ganz viele.
Zeilenweise kannst du das Dokument nicht verarbeiten, du wirst dich mit XML auseinandersetzen müssen.
Hier mal ein Beispiel:
Code: Alles auswählen
import xml.etree.ElementTree as ET
xml_string = '''<Values>
<Standardname_Variablenname1 Item="Standardname.Variablenname1" Type="4" Hex="420C0000" Value="35" />
<Standardname_Variablenname2 Item="Standardname.Variablenname1" Type="4" Hex="420C0000" Value="35" />
<Standardname_Variablenname3 Item="Standardname.Variablenname1" Type="4" Hex="420C0000" Value="35" />
<Standardname_Variablenname4 Item="Standardname.Variablenname1" Type="4" Hex="420C0000" Value="35" />
</Values>'''
doc = ET.fromstring(xml_string)
results = []
for item in doc:
data = {
"item": item.get("Item", "-empty-"),
"type": int(item.get("Type", 0)),
"hex": int(item.get("Type", 0), 16),
"value": int(item.get("Value", 0)),
}
if data["hex"] != data["type"]:
print("Inkonsistenter Datensetz:", data)
continue
results.append(data)
Beispiele wie man XML mit Python verarbeitet, gibt es aber ganz viele.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
@Lucas15: es sieht aus wie XML, daher kannst Du einfach mal versuchen, die Datei mit xml.etree.ElementTree zu laden. Wie das geht, steht in der Dokumentation.
Wenn die Tagnamen wirklich alle unterschiedlich sind, weil irgendein Laie das so definiert hat, bleibt Dir wohl nichts anderes übrig als alle Child-Tags unter <Values> durchzugehen und die benötigte Information aus den Attributen zu ziehen.
Wenn die Tagnamen wirklich alle unterschiedlich sind, weil irgendein Laie das so definiert hat, bleibt Dir wohl nichts anderes übrig als alle Child-Tags unter <Values> durchzugehen und die benötigte Information aus den Attributen zu ziehen.
Also:
Erst einmal vielen Dank für die hilfreichen antworten.
Ich bin nicht aus dem Informatik-Bereich, deshalb entschuldigt bitte meine unbedarfte Art...
Im Original handelt es sich um eine RF-Datei. Mir liegt allerdings ein Textdokument (.txt) mit dem Inhalt vor.
Ich möchte aus diesem Text einfach nur meine Informationen heraus lesen.
Meine Idee war, den Text nach Item=" und Value=" zu durchsuchen und den gesamten Text danach bis zum " anzuzeigen.
Dafür müsst ihr mir aber auf die Sprünge helfen
Erst einmal vielen Dank für die hilfreichen antworten.
Ich bin nicht aus dem Informatik-Bereich, deshalb entschuldigt bitte meine unbedarfte Art...
Im Original handelt es sich um eine RF-Datei. Mir liegt allerdings ein Textdokument (.txt) mit dem Inhalt vor.
Ich möchte aus diesem Text einfach nur meine Informationen heraus lesen.
Meine Idee war, den Text nach Item=" und Value=" zu durchsuchen und den gesamten Text danach bis zum " anzuzeigen.
Dafür müsst ihr mir aber auf die Sprünge helfen

Wenn nur die Dateiendung von rf zu txt geändert wurde, hast du weiterhin eine rf-Datei, nur halt mit einer "falschen" Endung. Eine Änderung der Endung bewirkt keine implizite Konvertierung oder sowas. Dateiendungen sind nur ein Hilfsmittel (zum Beispiel für das Betriebssystem) und für den Dateiinhalt bedeutungslos.Lucas15 hat geschrieben: Donnerstag 14. Mai 2020, 10:45 Ein Bildformat meine ich, was ja auch eigentlich egal ist, da ich ich den Code in einer Textdatei habe.
Wenn du wirklich nicht mehr zeigen kannst, und auch keine Auskunft geben kannst, mit welchem Programm die Datei erzeugt wurde, ist der Vorschlag von Sirius3 meiner Meinung nach im Moment am Besten: probier, ob die Datei mit einem XML Parser gelesen werden kann.
Die Textdatei wurde von mir erstellt und ist eine Textdatei.
Angenommen: Wenn ich eine Textdatei.txt habe, in der ein langer Text ist und ich in diesem Text zwei bestimmte Wörter suche die ich danach zusammen mit dem jeweils darauf folgenden Wort anzeigen will...
So als Beispiel:
"Und der Fehler? Rote Beete hat mit einem Beet nichts zu tun; Rote Beete bitte! Dachte ich. Und schaute noch mal im Duden nach, der mich sanft ohrfeigte."
Nun möchte ich den Begriff "Rote Beete" und jeweils das mir unbekannte Wort, welches danach steht anzeigen....diese Funktion/diesen Befehl möchte ich wissen
Angenommen: Wenn ich eine Textdatei.txt habe, in der ein langer Text ist und ich in diesem Text zwei bestimmte Wörter suche die ich danach zusammen mit dem jeweils darauf folgenden Wort anzeigen will...
So als Beispiel:
"Und der Fehler? Rote Beete hat mit einem Beet nichts zu tun; Rote Beete bitte! Dachte ich. Und schaute noch mal im Duden nach, der mich sanft ohrfeigte."
Nun möchte ich den Begriff "Rote Beete" und jeweils das mir unbekannte Wort, welches danach steht anzeigen....diese Funktion/diesen Befehl möchte ich wissen

Also eine rf-Datei ist eine FrameMaker Datei. FrameMaker "bietet auch eine gute Unterstützung für die Erstellung von SGML- und XML-Dokumenten." Deshalb vermute ich das es sich hier um eine XML Datei handelt, die mit dem FrameMaker erstellt wurde.
Quelle: https://de.wikipedia.org/wiki/FrameMaker
Quelle: https://de.wikipedia.org/wiki/FrameMaker
Wie hast du die Textdatei aus der Vorlage erstellt?Lucas15 hat geschrieben: Donnerstag 14. Mai 2020, 12:29 Die Textdatei wurde von mir erstellt und ist eine Textdatei.
Der erste Schritt bei so einer Aufgabe ist immer, zu schauen, ob es einen Parser für das Format gibt. Wenn es sich um XML handelt, ist der Ansatz mit Zeichenkettenoperationen, für den du gerne eine Erklärung hättest ungenügend, weil man XML so nicht verarbeiten sollte. Daher passt dein zweites Beispiel auch nicht, denn wenn du eine Erklärung, die für dieses zweite Beispiel passt, auf das erste anwendest, ist das relativ wahrscheinlich falsch.
Da würde ich das mit RegEx machen, aber trotzdem würde ich eher zusehen dass ich einen passenden Parser für deine Struktur finde.Lucas15 hat geschrieben: Donnerstag 14. Mai 2020, 12:29 Die Textdatei wurde von mir erstellt und ist eine Textdatei.
Angenommen: Wenn ich eine Textdatei.txt habe, in der ein langer Text ist und ich in diesem Text zwei bestimmte Wörter suche die ich danach zusammen mit dem jeweils darauf folgenden Wort anzeigen will...
So als Beispiel:
"Und der Fehler? Rote Beete hat mit einem Beet nichts zu tun; Rote Beete bitte! Dachte ich. Und schaute noch mal im Duden nach, der mich sanft ohrfeigte."
Nun möchte ich den Begriff "Rote Beete" und jeweils das mir unbekannte Wort, welches danach steht anzeigen....diese Funktion/diesen Befehl möchte ich wissen![]()
Wie von Sirius3 beschreiben würde ich mal versuchen das ganze mit xml.etree.ElementTree zu laden
Zuletzt geändert von Jankie am Donnerstag 14. Mai 2020, 12:51, insgesamt 1-mal geändert.
@Lucas15: Das Problem haben wir verstanden. Dein Lösungsansatz ist nur leider falsch.
Wenn es sich um XML handelt, solltest du einen entsprechenden Parser verwenden. XML ist eben nicht nur Text, sondern eine Struktur. Und die sollte man auch benutzen.
Und wie man das macht, steht hier sogar schon im Thread.
Wenn es sich um XML handelt, solltest du einen entsprechenden Parser verwenden. XML ist eben nicht nur Text, sondern eine Struktur. Und die sollte man auch benutzen.
Und wie man das macht, steht hier sogar schon im Thread.