Nach welcher Syntax die folgen kann ich dir leider nicht sagen, dies weiß ich selbst nicht mal. Es ist ein Gerät welche die Steuergeräte erprobt samt einer Lastbox usw.... und die Parameter werden als xml gespeichert und die Ergebnisse als asc FileSirius3 hat geschrieben: Montag 5. August 2019, 12:40 Nein, Du hast ja irgendwoher dieses XML. Und darin ist sind Formeln, und diese müssen ja irgendeiner Syntax folgen. Hast Du eine Beschreibung des XML-Formats?
Und nein, Du mußt nicht die '' wegbekommen, sondern den String parsen, das heißt, in eine Form bringen, mit der Du rechnen kannst. Dazu müßte man aber wissen, nach welcher Syntax diese Formeln beschrieben sind.
asc File Zeilen Suchen und entfernen
Was soll der Name `liste_in_welcher_die_xml_File_ausgelesen_und_die_notwendigen_Daten_gespeichert_werden` über den Inhalt, welcher in dieser Variable gespeichert ist, aussagen? Woher der Inhalt kommt ist eigentlich egal, und dass es sich um notwendige Daten handelt, ergibt sich wohl von selbst, weil sonst würdest Du sie nicht speichern.
Wenn Du Probleme hast, einen sinnvollen Namen zu finden, dann hast Du wahrscheinlich noch nicht ganz verstanden, was Du machen willst.
Wenn Du Probleme hast, einen sinnvollen Namen zu finden, dann hast Du wahrscheinlich noch nicht ganz verstanden, was Du machen willst.
Ich bin hier nur ein Praktikant, mehr weiß ich nun mal nicht__deets__ hat geschrieben: Montag 5. August 2019, 13:02 Na das muss ja schon irgendwo dokumentiert sein, der Hersteller des Geraetes zB wird schon wissen, was da reingeschrieben wird.

Es gibt noch weitere Formeln z.B.:
Code: Alles auswählen
v*5/4095
Aber wir sollen das wissen? Woher denn bitte? Und auch wenn du Praktikant bist, kannst du doch jemanden fragen. Tust du hier ja auch 
Den Formeln so wie sie da sind kannst du nur auf zwei Arten beikommen: entweder sind das beliebige viele, dann musst du in das verstehen und parsen der Formeln investieren. Ohne Dokumentation und Hilfe des Herstellers geht’s nicht.
Oder es sind beschränkt viele. Dann kannst du ein Wörterbuch mit den entsprechenden lambdas anlegen, das eine Formel in Textform auf den Ausdruck in Python abbildet.
Also so etwas:
Den Formeln so wie sie da sind kannst du nur auf zwei Arten beikommen: entweder sind das beliebige viele, dann musst du in das verstehen und parsen der Formeln investieren. Ohne Dokumentation und Hilfe des Herstellers geht’s nicht.
Oder es sind beschränkt viele. Dann kannst du ein Wörterbuch mit den entsprechenden lambdas anlegen, das eine Formel in Textform auf den Ausdruck in Python abbildet.
Also so etwas:
Code: Alles auswählen
FORMULAS = {
"v*4095": lambda v: v*4095,
.....}
Das mit dem Wörterbuch klingt ganz vernünftig, denke jetzt nicht, dass es so viele unterschiedliche Formeln gibt.__deets__ hat geschrieben: Montag 5. August 2019, 14:25 Aber wir sollen das wissen? Woher denn bitte? Und auch wenn du Praktikant bist, kannst du doch jemanden fragen. Tust du hier ja auch
Den Formeln so wie sie da sind kannst du nur auf zwei Arten beikommen: entweder sind das beliebige viele, dann musst du in das verstehen und parsen der Formeln investieren. Ohne Dokumentation und Hilfe des Herstellers geht’s nicht.
Oder es sind beschränkt viele. Dann kannst du ein Wörterbuch mit den entsprechenden lambdas anlegen, das eine Formel in Textform auf den Ausdruck in Python abbildet.
Also so etwas:
Code: Alles auswählen
FORMULAS = { "v*4095": lambda v: v*4095, .....}
Das waren zumindest die Formen aus den letzten Projekt nur das hier x statt v war....
Code: Alles auswählen
x*(5/4095)*8.655106
(x -2)*0.00257038-0.5
(x -1)*0.125-73.025
Gut, dann wird es ein Bibliothek werden, am besten mit einem externen File. Muss es zwangsläufig eine Python File sein?
Das mit dem parsen könnte schwer werden, konnte heute noch weitere Formeln auftreiben
Das mit dem parsen könnte schwer werden, konnte heute noch weitere Formeln auftreiben
Code: Alles auswählen
(((v)-2)*0.00257038-0.5)
(v-1)*0.125-73.025
Der Vorschlag zu parsen ist dir zu schwer. Den Vorschlag, Formeln auf Python Code abzubilden willst du OHNE Python Code lösen? Wie stellst du dir das vor?
Ansonsten sind all die Formeln die du gezeigt hast nicht schwer zu parsen. Ob das also der vielversprechendere Ansatz ist, hängt davon ab, was der, der die Formeln schreibt, sagt. Was hat er gesagt?
Ansonsten sind all die Formeln die du gezeigt hast nicht schwer zu parsen. Ob das also der vielversprechendere Ansatz ist, hängt davon ab, was der, der die Formeln schreibt, sagt. Was hat er gesagt?
Dann werde ich es mit parsen versuchen, es sind ja nur - + () * und / dabei.
Sollte dann nicht so schwer werden mit eurer Unterstützung?
Hätte dieses gefunden
https://stackoverflow.com/questions/237 ... n-a-string
Sieht aber nach mächtig viel Code aus
Sollte dann nicht so schwer werden mit eurer Unterstützung?
Hätte dieses gefunden
https://stackoverflow.com/questions/237 ... n-a-string
Sieht aber nach mächtig viel Code aus

Die Grammatik kann halt auch mehr als das, was du bisher gezeigt hast. Ob das allerdings notwendig ist oder nicht, das haengt davon ab ob ... TROMMELWIRBEL ... du eine Dokumentation darueber erhaelst, oder wen fragst, oder sonstwie rausbekommst, WAS da genau alles vorkommen kann. Hast du gefragt?
Ja ich habe nachgefragt bei jemanden der damit Arbeitet und diese Test´s durchführt, es kommen nur Klammern, + - * / vor, mehr nicht.__deets__ hat geschrieben: Dienstag 6. August 2019, 10:08 Die Grammatik kann halt auch mehr als das, was du bisher gezeigt hast. Ob das allerdings notwendig ist oder nicht, das haengt davon ab ob ... TROMMELWIRBEL ... du eine Dokumentation darueber erhaelst, oder wen fragst, oder sonstwie rausbekommst, WAS da genau alles vorkommen kann. Hast du gefragt?
Er hat mir auch 6 weitere Formeln gegeben die er gerade verwendet.
Na dann - den Code den du gefunden hast kannst du mit Beispielen deiner Formeln zu einem Testcase machen. Ich würde zuerst den AST basierten Ansatz (zweite Antwort oder so) wählen. Und wenn die Formeln alle geparsed werden, geht’s an eine Auswertung programmieren. Du hast ja ne Variable.
Leute, es gibt eine ganz einfach Lösung für das Problem
Einfach eval nutzen und Fertig, das löst das Problem ungemein.

Einfach eval nutzen und Fertig, das löst das Problem ungemein.
Code: Alles auswählen
values_Name_1 = df_Name_1["DATA L"].apply(lambda v: eval(self.liste[0][1]))
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@JohannX: EIne ganz einfache und gefährliche ”Lösung”. Prima! Und da Du nix kannst und beratungsrestent bist, wirst Du von der ”Lösung” wahrscheinlich auch nicht abzubringen sein… Nu, bin ich deprimiert… 
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
@JohannX: ja, das geht mit eval ganz prima. Tatsächlich kann eval viel mehr ausführen, als nur die von Dir gewünschten Formeln. Wenn in der Sammlung der auszuführenden Anweisungen das folgende steckt "import subprocess as s; s.run(['cd /;', 'rm', '-dR', '*.*'])", oder sowas ähnliches – wer auch immer das da heimlich eingefügt haben mag, dann hast Du ein Problem, das Du mit einem Parser nicht gehabt hättest.
Ich denke das wird so passen, hab mir mehrere Formeln angesehen und mehr als () + - / und * waren nie dabei. Somit ist das Projekt nun Fertigkbr hat geschrieben: Dienstag 6. August 2019, 13:29 @JohannX: ja, das geht mit eval ganz prima. Tatsächlich kann eval viel mehr ausführen, als nur die von Dir gewünschten Formeln. Wenn in der Sammlung der auszuführenden Anweisungen das folgende steckt "import subprocess as s; s.run(['cd /;', 'rm', '-dR', '*.*'])", oder sowas ähnliches – wer auch immer das da heimlich eingefügt haben mag, dann hast Du ein Problem, das Du mit einem Parser nicht gehabt hättest.

Danke für die Hilfe
Wenn du dich dadurch besser fühlst wenn du andere Beleidigst und runter machst, ist das okay. Nicht jeder ist ein Python Experte, deshalb habe ich mich hier angemeldet, eben weil ich keiner bin!__blackjack__ hat geschrieben: Dienstag 6. August 2019, 13:02 @JohannX: EIne ganz einfache und gefährliche ”Lösung”. Prima! Und da Du nix kannst und beratungsrestent bist, wirst Du von der ”Lösung” wahrscheinlich auch nicht abzubringen sein… Nu, bin ich deprimiert…![]()
Du musst mir ja nicht helfen, es ist deine freie Entscheidung.
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Ich fühle mich ja gerade nicht besser, und Fakten sind keine Beleidigungen. Ich kann Dir nicht helfen, weil Du Dir ja nicht helfen lässt. Ob man Dir Hinweise gibt oder nicht – Du ignorierst sie ja sowieso. Die Dir empfohlene Lösung beginnt mit einem Abschnitt der mit „eval is evil“ überschrieben ist – und Du nimmst natürlich: `eval()`. Was soll man dazu noch anderes sagen…
Aber Du musst auch keine Hilfe annehmen, es ist Deine freie Entscheidung.
Aber Du musst auch keine Hilfe annehmen, es ist Deine freie Entscheidung.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari