Seite 1 von 2
In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 10:07
von rennmaus
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
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 13:22
von __blackjack__
@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.
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 17:50
von rennmaus
Bin halt noch neu in Python, und kenne daher noch nicht alle Funktionen usw.
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 19:27
von Sirius3
Dann beantworte doch mal __blackjack__s Frage: wie würdest Du auf einem Blatt die Zeile mit einem bestimmten Wort suchen?
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 21:32
von rennmaus
Naja, ich würde einfach Zeile für Zeile nach dem Wort suchen...
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 21:51
von Sirius3
Genau, Du mußt also die Datei Zeilenweise durchgehen und in jeder Zeile nach dem Wort suchen.
Wenn Du weißt, wie man eine Datei schreibt, weißt Du auch bestimmt, wie man eine Datei liest?
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 22:00
von rennmaus
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
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 22:44
von Sirius3
Probier es aus.
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 22:45
von rennmaus
Morgen....
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 22:50
von __blackjack__
@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?
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Samstag 5. September 2020, 23:04
von rennmaus
Nur die erste...
Ich mache gerade eine Datenbank, und möchte dann erreichen, dass man den Namen eingibt, und dann die ganzen Informationen bekommt.
Das alles werde ich morgen mal ausprobieren.
Danke!
Mfg
Christian
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Sonntag 6. September 2020, 08:13
von rennmaus
Ich komme nicht weiter... Bei readline kann man ja nur mit Zahlen sagen, welche Zeile es ausgeben soll, aber nicht mit Wörtern.
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Sonntag 6. September 2020, 08:32
von sparrow
__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!
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Sonntag 6. September 2020, 08:42
von rennmaus
Naja ich würde vielleicht den Anfangsbuchstaben nehmen, und dann in den Zeilen nach ihm suchen... Ich weiß aber nicht, ob meine Antwort die Antwort ist die mir weiterhilft
Mfg
Christian
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Sonntag 6. September 2020, 09:34
von __blackjack__
@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.
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Sonntag 6. September 2020, 09:41
von rennmaus
Ja... Ich wollte das mit dem Filtern machen, weil sonst könnte ich mir ja auch einfach ein ganz normales Dokument nehmen und es mir durchlesen....
Mfg
Christian
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Sonntag 6. September 2020, 10:15
von snafu
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
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Sonntag 6. September 2020, 10:49
von __blackjack__
Kaum ist das Wort im Duden…
*noch 'n Zwinkersmiley*
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Sonntag 6. September 2020, 10:54
von sparrow
@__blackjack__ Oha, du hast recht. Da habe ich readline() und readlines() verwechselt.
Re: In txt Datei nach bestimmten Text suchen und Ausgeben
Verfasst: Sonntag 6. September 2020, 17:16
von rennmaus
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