Liste in Txt-Datei zwischenspeichern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ssf
User
Beiträge: 2
Registriert: Dienstag 12. Oktober 2021, 20:09

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
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@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.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Ü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
Benutzeravatar
snafu
User
Beiträge: 6873
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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...
ssf
User
Beiträge: 2
Registriert: Dienstag 12. Oktober 2021, 20:09

Vielen herzlichen Dank euch zwei für die rasche Antwort. So sollte ich weiterkommen.

Danke!
Benutzeravatar
__blackjack__
User
Beiträge: 14069
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich würde dann noch mal JSON in die Runde werfen wollen, statt sich da selbst ein Textdateiformat zu basteln.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten