Hallo,
Ich weiß die Frage wurde schon oft beantwortet, jedoch war die Antwort für mich nicht wirklich schlüssig.
Ich möchte in einer txt nach einem Bestimmten Text suchen, welcher danach Ausgegeben werden soll. Sozusagen eine Datenbank.
In txt Dateien schreiben, kann ich aber wie schaffe ich es dann, dass er mir die gewünschte Zeile mit dem Zielwort ausgibt?
Freue mich auf eure Antworten!
Mfg
Christian
In txt Datei nach bestimmten Text suchen und Ausgeben
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@rennmaus: Was hast Du denn versucht? Was musst Du denn da konzeptionell machen? Wenn das jetzt keine Datei wäre, sondern Text auf einem Blatt Papier, wie müsstest Du dann vorgehen um eine Zeile mit einem bestimmten Inhalt zu finden? Im Grunde musst Du genau das auch in einem Programm machen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Ja... Allerdings, hatte ich es bisher immer nur, dass ich die ganze Datei ausgegeben habe.
Daher weiß ich nicht wirklich wie ich Python sagen kann, dass es die Datei nach diesem Wort absuchen kann und dann diese Zeile ausgibt.
Vielleicht irgendwie mit file.readline()?
Mfg
Christian
Daher weiß ich nicht wirklich wie ich Python sagen kann, dass es die Datei nach diesem Wort absuchen kann und dann diese Zeile ausgibt.
Vielleicht irgendwie mit file.readline()?
Mfg
Christian
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@rennmaus: Du willst Python ja auch nicht sagen das es *die Datei* nach einem Wort absucht, sondern wie Du das auch mit dem Blatt Papier beschrieben hast, in jeder Zeile nach dem Wort suchen. Programmieren ist zerlegen von Problemen in Teilprobleme, und zerlegen dieser Teilprobleme in noch kleinere Teilprobleme. Solange bis sich ein Teilproblem mit einer Funktion mit ein paar Zeilen Code lösen lässt. Wenn man die kleinsten Teile so gelöst hat, kann man daraus die Probleme lösen die sich aus den gelösten Teilproblemen zusammensetzen. Und am Ende hat man so das Gesamtproblem gelöst.
Du kannst das Gesamtproblem zum Beispiel so aufteilen, dass Du „Finde Wort in Datei und gibt Zeile(n) aus“ in ein Teilproblem „Finde Wort in einer Zeile und gib die gegebenfalls aus“ zerlegen. Wenn Du das kannst, dann kannst Du diese Teillösung nämlich einfach auf jede Zeile in der Datei anwenden. Und hättest damit bereits die Gesamtlösung.
`file.readline()` ist an sich schon nicht schlecht, aber Du willst ja etwas für jede Zeile machen. Also eine Schleife über die Zeilen. Und da gibt es einen einfacheren Weg. Der wird beispielsweise in Python-Tutorial in der Python-Dokumentation gezeigt.
Soll eigentlich jede Zeile mit dem Suchtext ausgegeben werden, oder nur die erste und dann abgebrochen werden?
Du kannst das Gesamtproblem zum Beispiel so aufteilen, dass Du „Finde Wort in Datei und gibt Zeile(n) aus“ in ein Teilproblem „Finde Wort in einer Zeile und gib die gegebenfalls aus“ zerlegen. Wenn Du das kannst, dann kannst Du diese Teillösung nämlich einfach auf jede Zeile in der Datei anwenden. Und hättest damit bereits die Gesamtlösung.
`file.readline()` ist an sich schon nicht schlecht, aber Du willst ja etwas für jede Zeile machen. Also eine Schleife über die Zeilen. Und da gibt es einen einfacheren Weg. Der wird beispielsweise in Python-Tutorial in der Python-Dokumentation gezeigt.
Soll eigentlich jede Zeile mit dem Suchtext ausgegeben werden, oder nur die erste und dann abgebrochen werden?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
__blackjack__ hat es schon gesagt: Du musst dein Problem in Teilprobleme zerlegen. Es gibt nicht die eine Zeile Code, die du eingibst und dann das entsprechende Ergebnis erhälst. Da ist kein fertiger Befehl*.
Du musst deine Werkzeuge - also deine verfügbaren Befehle - so verwenden, das du das gewünschte Ergebnis bekommst.
__blackjack__ hat ja nicht ohne Grund gefragt, wie du das Problem mit einem Text auf einem Blatt Papier lösen würdest. Vielleicht solltest du das mal bis zum Ende durchformulieren. Denn du suchst ja nicht nur Zeile für Zeile, sondern du tust ja auch etwas mit den Zeilen. Und diese vielen Einzelschritte, die musst du dann in Python-Code übertragen.
Mann kann readline() etwas sagen? Soweit ich weiß, nimmt das keine Argumente an und liefert eine Liste zurück, dass alle Zeilen der Datei enhält.
Also dein Blatt Papier. Mit allen Zeilen. Und wann tust du, was du __blackjack__ geantwortet hast, was du mit dem Blatt Papiar tun würdest?
*Ich weiß, ihr Zyniker!
Du musst deine Werkzeuge - also deine verfügbaren Befehle - so verwenden, das du das gewünschte Ergebnis bekommst.
__blackjack__ hat ja nicht ohne Grund gefragt, wie du das Problem mit einem Text auf einem Blatt Papier lösen würdest. Vielleicht solltest du das mal bis zum Ende durchformulieren. Denn du suchst ja nicht nur Zeile für Zeile, sondern du tust ja auch etwas mit den Zeilen. Und diese vielen Einzelschritte, die musst du dann in Python-Code übertragen.
Mann kann readline() etwas sagen? Soweit ich weiß, nimmt das keine Argumente an und liefert eine Liste zurück, dass alle Zeilen der Datei enhält.
Also dein Blatt Papier. Mit allen Zeilen. Und wann tust du, was du __blackjack__ geantwortet hast, was du mit dem Blatt Papiar tun würdest?
*Ich weiß, ihr Zyniker!
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@sparrow: Ich glaube Du verwechselst da gerade `readline()` mit `readlines()`. `readline()` kennt ein Argument, das ist aber nur *sehr* selten sinnvoll. Ich hätte jetzt ernsthaft Schwierigkeiten mir ein Szenario dafür auszudenken.
@rennmaus: `readline()` kann man nicht per Zahl die Zeile sagen. Da kann man nur sagen wie viele Zeichen maximal gelesen werden sollen bevor der Lesevorgang abbricht. Es können nicht mehr Zeichen gelesen werden, aber weniger falls das Zeilenendezeichen vor dieser maximalen Zeichenanzahl kommt. Falls die maximale Zeichenanzahl der Grund für den Abbruch war, dann steht der Dateizeiger mitten in der Zeile und beim nächsten Lesezugriff wird von der Stelle aus ausgegangen.
Du kannst auch Programme teilweise entwickeln und testen. Also das mit dem Filtern erst einmal weg lassen und ein Programm schreiben das einfach alle Zeilen ausgibt. Wenn Du das hast, dann kannst Du Dir überlegen wie Du da die Filterbedingung und einen Abbruch nach dem ersten Treffer einbaust.
Dein Programm, zumindest so wie Du das Problem beschrieben hast, braucht Grundlagenwissen aus drei Bereichen: Zeichenketten, Schleifen, und Dateien. Alles was Du dafür wissen musst, sollte eigentlich in jedem Grundlagentutorial dran kommen. Es gibt wie schon gesagt ein Tutorial in der Python-Dokumentation.
@rennmaus: `readline()` kann man nicht per Zahl die Zeile sagen. Da kann man nur sagen wie viele Zeichen maximal gelesen werden sollen bevor der Lesevorgang abbricht. Es können nicht mehr Zeichen gelesen werden, aber weniger falls das Zeilenendezeichen vor dieser maximalen Zeichenanzahl kommt. Falls die maximale Zeichenanzahl der Grund für den Abbruch war, dann steht der Dateizeiger mitten in der Zeile und beim nächsten Lesezugriff wird von der Stelle aus ausgegangen.
Du kannst auch Programme teilweise entwickeln und testen. Also das mit dem Filtern erst einmal weg lassen und ein Programm schreiben das einfach alle Zeilen ausgibt. Wenn Du das hast, dann kannst Du Dir überlegen wie Du da die Filterbedingung und einen Abbruch nach dem ersten Treffer einbaust.
Dein Programm, zumindest so wie Du das Problem beschrieben hast, braucht Grundlagenwissen aus drei Bereichen: Zeichenketten, Schleifen, und Dateien. Alles was Du dafür wissen musst, sollte eigentlich in jedem Grundlagentutorial dran kommen. Es gibt wie schon gesagt ein Tutorial in der Python-Dokumentation.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Das ist alles mehr Raten als Wissen. So kommst du auf Dauer nicht weiter und merkst dies ja jetzt schon.
Hier ist ein deutsches Python-Tutorial: https://py-tutorial-de.readthedocs.io/de/python-3.3/
Das ist noch für Python 3.3 geschrieben, es ist aber für die meisten Grundlagen immer noch nützlich. Nimm dir 1-2 Tage Zeit zum Lesen und Ausprobieren der Beispiele. Ändere die Beispiele leicht ab und schau, ob das Ergebnis deinen Erwartungen entspricht.
Bitte nicht falsch verstehen. Wir helfen auch Anfängern, aber du bist gerade so eine Art Fußballspieler, der uns fragt, wie man die Schuhe bindet. Soll heißen: So ein bißchen Vorwissen solltest du dir schon selbst aneignen. Und wie gesagt bitte nicht durch das bloße Raten von Funktionsparametern. *Zwinkersmiley
Hier ist ein deutsches Python-Tutorial: https://py-tutorial-de.readthedocs.io/de/python-3.3/
Das ist noch für Python 3.3 geschrieben, es ist aber für die meisten Grundlagen immer noch nützlich. Nimm dir 1-2 Tage Zeit zum Lesen und Ausprobieren der Beispiele. Ändere die Beispiele leicht ab und schau, ob das Ergebnis deinen Erwartungen entspricht.
Bitte nicht falsch verstehen. Wir helfen auch Anfängern, aber du bist gerade so eine Art Fußballspieler, der uns fragt, wie man die Schuhe bindet. Soll heißen: So ein bißchen Vorwissen solltest du dir schon selbst aneignen. Und wie gesagt bitte nicht durch das bloße Raten von Funktionsparametern. *Zwinkersmiley
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Kaum ist das Wort im Duden…
*noch 'n Zwinkersmiley*
*noch 'n Zwinkersmiley*
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Also,
ich habe jetzt eine andere möglichkeit gefunden. Allerdings, habe ich mit dieser ein kleines Problem: Hier mal der Code, das um was es geht:#
filename = (z, ".txt")
file = open (z, 'x')
file.write (z, "/",w, "/",e, "/",r, "/", t)
file.close()
die Buchstaben sind Variablen, welche definiert wurden, aber nachdem ich das Programm ausgeführt habe, bekomme ich eine Datei Datei, soll heißen, keine txt Datei sondern eine Datei, wo hinten in der Spalt Datei steht.
Woran könnte das liegen? Ist der Modus falsch in dem ich die Datei erstelle?
Mfg
Christian
ich habe jetzt eine andere möglichkeit gefunden. Allerdings, habe ich mit dieser ein kleines Problem: Hier mal der Code, das um was es geht:#
filename = (z, ".txt")
file = open (z, 'x')
file.write (z, "/",w, "/",e, "/",r, "/", t)
file.close()
die Buchstaben sind Variablen, welche definiert wurden, aber nachdem ich das Programm ausgeführt habe, bekomme ich eine Datei Datei, soll heißen, keine txt Datei sondern eine Datei, wo hinten in der Spalt Datei steht.
Woran könnte das liegen? Ist der Modus falsch in dem ich die Datei erstelle?
Mfg
Christian