Anfängerfrage zum auslesen eines Wertes aus Textdatei ...

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
topsurfer
User
Beiträge: 6
Registriert: Freitag 26. Oktober 2018, 16:40

Hallo,
ich nutze mehr Shell-Scripte auf meinem raspberry, aber ein kleines Script ist in python (interrupts).
Ich habe leider sehr wenig Erfahring mit Python, und da ich noch viele andere Thmen habe wo ich mich am einarbeiten bin und ich hier "nur" noch dieses "kleine" Problem habe, wäre es toll, wenn jemand kurz die geschätzen 3 Zeilen nennen könnte die ich benötige ;-)

Ich habe eine einzeilige Textdate ("Werte.txt) mit folgendem Inhalt (3 Werte), aus welcher ich die Variable "Summe" auslesen muss und die Variable sum damit besetzen will:
{ Links: 0.055, Rechts: 0.628, Summe: 10003 }

" sum" soll also innerhalb des Python-Scripts den Wert 10003 bekommen.
(die Felder sind fix, also ging es z.B. über Feldtrenner ":" und dann der dritter Wert ...)

THX !
Zuletzt geändert von topsurfer am Freitag 26. Oktober 2018, 17:08, insgesamt 1-mal geändert.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe ganz viel Durst, und brauche dringend Bier. Waere schoen, wenn mir da einer drei Flaschen schickt.

Und das Format sieht eigentlich nahe an JSON aus, und sollte vernuenftig geparst werden. Gegebenenfalls ist die Reihenfolge auch unterschiedlich, zumindest ist das theoretisch moeglich, und darauf sollte man ebenfalls ruecksicht nehmen. Bist du dir also sicher, dass das IMMER genau so aussieht?
topsurfer
User
Beiträge: 6
Registriert: Freitag 26. Oktober 2018, 16:40

Ja, ich generiere ja den Output über eine Shell-Script, daher ist es immer der 3. Wert ;-)
Was natürlich auch OK wäre, wenn "sum" mit dem Wert besetzt wird, welcher nach "Summe:" kommt (wäre wohl "sauberer", keine Frage!)

Und ja, es ist eine Bitte, das mir hier jemand kurz hilft. Ist sonst nicht meine Art ...

PS: Wenn ich so eine konkrete Lösung "sehe" kann ich die (zumeist) auch verstehen und nachvollziehen ...
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Code: Alles auswählen

>>> s = '{ Links: 0.055, Rechts: 0.628, Summe: 10003 }'
>>> s.split(':')[-1].split('}')[0]
topsurfer
User
Beiträge: 6
Registriert: Freitag 26. Oktober 2018, 16:40

Hmmm, danke. Aber die aktuellen Werte müssen doch aus der Datei (Werte.txt) erst mal eingelesen werden ...
f.open oder read ...?
Und dann "sum" mit dem 3.Wert (also von "Summe") belegt werden ...
Benutzeravatar
snafu
User
Beiträge: 6862
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich würde da mit einem regulären Ausdruck rangehen:

Code: Alles auswählen

re.search(r'Summe: (\d+)', s).group(1)
topsurfer
User
Beiträge: 6
Registriert: Freitag 26. Oktober 2018, 16:40

Sorry, wie auch immer, ich muss doch erst aus der Datei was einlesen, und am Ende muss der Wert "sum" besetzt sein.
Ich Shell, awk, perl, Pascal oder Assembler bekomme ich das hin, aber mit Python kenne ich mich (sorry) nicht aus.

Habe jetzt 2h Stunden versucht, anhand dieses (*) Beispiels hier mein Problem zu lösen, aber das bringt nur module Fehler. Beitrag ist aber auch schon 8 Jahre alt... Zumindest sah die Lösung z.T. so aus wie ich es benötige.
(*) https://stackoverflow.com/questions/283 ... -json-file
Zuletzt geändert von topsurfer am Freitag 26. Oktober 2018, 18:54, insgesamt 1-mal geändert.
Benutzeravatar
snafu
User
Beiträge: 6862
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Soviel wie du hier in deine Fragen investierst, hättest du auch kurz eine Suchmaschine nehmen können. Lesen von Dateien ist absolutes Basiswissen und findet sich in jedem beliebigen Python-Tutorial...

Code: Alles auswählen

with open(dateiname) as datei:
    datei.read()
topsurfer
User
Beiträge: 6
Registriert: Freitag 26. Oktober 2018, 16:40

Danke, meine Frage war und ist klar als Anfängerfrage deklariert ... wie geschrieben, ich benötige Python nur an dieser Stelle und mir fehlt nur das einlesen dieses Wertes.

Jetzt weiß ich zwar wie ich die Datei reinlesen kann, aber die Variable "sum" ist deswegen noch immer nicht mit dem Wert besetzt.
Scheint nicht lösbar zu sein, wobei ich sicher bin, das es nur 5 Zeilen sind ... Und dafür diese Menge an postings mit "Teillösungen", mir etwas unverständlich, sorry.
Oder ist im 1. Beitrag die Problemstellung nicht klar umschrieben?
Benutzeravatar
snafu
User
Beiträge: 6862
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Du scheinst dieses Forum für eine kostenlose Codefarm zu halten. Sehen die meisten Regulars und ich aber etwas anders. Viel Erfolg beim Finden der Lösung!
topsurfer
User
Beiträge: 6
Registriert: Freitag 26. Oktober 2018, 16:40

"Codefarm" ist gut, wenn ein Einsteiger eine Bitte hat, ihm einen 5 zeilgen Code zu zeigen, wie er sein Problem lösen kann.
Ist ja nix komplexes, oder? Wert aus einer Datei lesen und in einer Variable nutzen.

Heute 3 Stunden probiert ... Für heute reichts, Monatg gehts weiter ...
Falls noch einer was hat, gerne.
Und wegen dem Vorwurf von dem "kostenlosen" les ich raus, das für Geld etwas mehr geholfen wird. Daran soll es nicht scheitern (kenn ich zwar so aus keinem anderen Forum, aber wenn das so bei Programmieren ist, OK)
Benutzeravatar
__blackjack__
User
Beiträge: 14033
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@topsurfer: Ich glaube nicht das Dir bei dem Problem *ernsthaft* jemand für Geld helfen würde, das Problem ist eher das hier Leute sind die Python mögen und Leuten dabei helfen Python zu lernen. Wenn Du Python nicht lernen willst, kannst Du halt auch nix in Python programmieren. Das konkrete Problem ist nicht schwer zu lösen, das nötige Wissen dazu aus dem Tutorial in der Standardbibliothek auch relativ leicht zu erlernen.

Erfahrungsgemäss kommen Leute die mal eben drei, vier Zeilen Code haben wollen ohne selbst was zu tun, relativ bald wieder mit Änderungswünschen oder der nächsten Frage, und am Ende wäre es doch sinnvoller wenn sie sich das mal selbst erarbeitet. Python ist da ja auch keine „rocket science“ und wenn man schon Programmiererfahrung hat, kommt man auch recht schnell durch das offizielle Tutorial durch, was eine solide Basis vermittelt.

Warum muss das denn Python sein, wenn Du doch schon andere Programmiersprachen kennst/kannst?

Und wo kommt dieses ”fast JSON” her und warum ist das nicht “echt JSON“? Eigene Formate erfinden, die zudem noch *so* ähnlich zu einem Standardformat sind, ist in aller Regel keine gute Idee.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

topsurfer hat geschrieben: Freitag 26. Oktober 2018, 19:56 "Codefarm" ist gut, wenn ein Einsteiger eine Bitte hat, ihm einen 5 zeilgen Code zu zeigen, wie er sein Problem lösen kann.
Ist ja nix komplexes, oder? Wert aus einer Datei lesen und in einer Variable nutzen.
Für jemanden, der sich rühmt 5 Programmierersprachen zu beherrschen, bist du erstaunlich hilflos so was simples wie eine Datei zu öffnen und deren Inhalt zu lesen in unter 3 Stunden hin zu bekommen. Die String-operationen kann ich ja verstehen, hast du aber gelöst bekommen. Und wenn du in all diesen Sprachen beherrschst , wieso dann Python und seine geldgierige Community? In awk, Perl, und ggf Pascal ist das doch alles trivial.

Mir fehlt hier eine ganze Reihe von Puzzleteilen. Einen Wert aus einer Datei an eine Variable binden tut ja auch noch nix. Was ist denn deine wirkliches Problem?
Antworten