Seite 1 von 1

Liste in Txt-Datei zwischenspeichern

Verfasst: Dienstag 12. Oktober 2021, 20:39
von ssf
Hallo zusammen

Wieder mal ein absoluter Python-Neuling, der die Meute nervt... :)

Ich danke euch jetzt schon für eure Hilfe!

Ich bin aktuell passiv auf Jobsuche und schreibe daher mit Python ein Tool, welches diverse Webseiten von Firmen nach neuen Jobs scrapen soll. Die Idee ist die folgende: Jobs scrapen, Vergleich mit gestrig gescrapter Liste, nur neu hinzugefügte Jobs werden via E-Mail an mich versandt.

Ich möchte gerne die Liste der Jobs in einem Txt-File auf dem Computer zwischenspeichern und bei Ausführung wieder abholen.

Wenn ich direkt in Python mit den Listen arbeite und einen Vergleich anstelle, welche neuen Jobs hinzugefügt wurden, funktioniert das ohne Probleme:

Code: Alles auswählen

jobs_gestern_gescraped = ['Job 1', 'Job 2', 'Job 3', 'Job 4']
jobs_heute_gescraped = ['Job 1', 'Job 3', 'Job 4', 'Job 5']
neue_jobs = [i for i in jobs_heute_gescraped if i not in jobs_gestern_gescraped]
print(neue_jobs)
>>>['Job 5']
Wenn ich aber die Listen in Python in je einer Txt-Datei speichere und wieder öffne, funktioniert der Vergleich nicht mehr. Als Ausgabe kommt dann beispielsweise:

Code: Alles auswählen

>>>['J', 'o', 'x']
Python zieht einzelne Buchstaben aus dem neu hinzugefügten Job. Ich verstehe das Muster dahinter nicht genau.

Was mir aber aufgefallen ist, die Liste wird im Gegensatz zur aktuellen Liste im "Python-Speicher" (

Code: Alles auswählen

['Hundefriseur', 'Kampftrinker']
) mit Anführungszeichen ausgegeben, wenn ich diese von der Text-Datei öffne:

Code: Alles auswählen

"['Hundefriseur', 'Kampftrinker']"
Sollte es sich um einen absolut dummen Anfängerfehler handeln, wäre ich schon um ein einzelnes Stichwort mit einem Hinweis dankbar. :D

Ich danke euch!
SSF

Re: Liste in Txt-Datei zwischenspeichern

Verfasst: Dienstag 12. Oktober 2021, 22:38
von rogerb
@ssf,

Das was du im Python-Speicher siehst ist eine Liste, erkennbar and den äußeren eckigen Klammern. In der Liste befinden sich String-Elemente, erkennbar an den Anführungsstrichen.
In der Textdatei steht, - Trommelwirbel - ... Text. Komischerweise sind da auch noch, aus irgendeinem Grund, doppelte und einfache Anführungsstriche und eckige Klammern.
Hättest du die Daten richtig gespeichert, dürfte da nur Hundefriseur und Kampftrinker stehen. Denn wenn man Listen von Strings (richtig) in eine Textdatei speichert, wird das Drummherum mit den Anführungsstrichen und Klammern nicht mitgespeichert.
Dass die dort aber zu sehen sind, deutet darauf hin, dass du irgend etwas sehr merkwürdiges gemacht haben must.
Was genau das ist, kann man ohne den Code zu sehen aber nur vermuten.

Re: Liste in Txt-Datei zwischenspeichern

Verfasst: Dienstag 12. Oktober 2021, 23:12
von rogerb
Übrigens:
Wenn du Jobs von gestern und heute in einem Set (so etwas wie eine mathematische Menge) speicherst, kannst du mit einfachen Operationen (hier zum Beispiel: difference) die neuen Jobs finden:

Code: Alles auswählen

jobs_gestern_gescraped = {'Job 1', 'Job 2', 'Job 3', 'Job 4'}
jobs_heute_gescraped = {'Job 1', 'Job 3', 'Job 4', 'Job 5'}

neue_jobs  = jobs_heute_gescraped.difference(jobs_gestern_gescraped)
https://docs.python.org/3/tutorial/data ... .html#sets

Re: Liste in Txt-Datei zwischenspeichern

Verfasst: Mittwoch 13. Oktober 2021, 05:42
von snafu
Man muss halt die Liste mit einer Schleife durchlaufen und die einzelnen Zeilen schreiben oder man benutzt die writelines()-Methode von Dateiobjekten zur Übergabe für der kompletten Liste. Jetzt hast du die nötigen Stichworte. Alternativ einfach stumpf nach "write lines to python file" oder ähnliches suchen. Wenn es daran schon hapert, ist es noch ein langer Weg zum universellen Job-Scraper...

Re: Liste in Txt-Datei zwischenspeichern

Verfasst: Mittwoch 13. Oktober 2021, 09:16
von ssf
Vielen herzlichen Dank euch zwei für die rasche Antwort. So sollte ich weiterkommen.

Danke!

Re: Liste in Txt-Datei zwischenspeichern

Verfasst: Mittwoch 13. Oktober 2021, 11:43
von __blackjack__
Ich würde dann noch mal JSON in die Runde werfen wollen, statt sich da selbst ein Textdateiformat zu basteln.