Skip to content

Python - Formatumwandlung str -> float

Python3
1 1 935
  • Seit einigen wenigen Tagen, beschäftige ich mich damit wie man ein paar Daten von einer Webseite ausliest und diese dann entsprechend weiterverarbeitet.

    Dabei musste ich so ziemlich das erste Mal in Python rechnen und was kam - Fehler! Die Formate passte nicht. Somit musste ich mich damit beschäftigen, wie man so was umwandelt.

    Nehmen wir an, ich erhalte solche Daten

    Formatierte Stringwerte aus dem Scraping ['20.605,00', '3.685,50', '3.013,80']
    

    Nehmen wir weiterhin an, es sind € Werte und ich möchte diese addieren. Die Liste von oben hat den Namen result.

    # String Werte umwandeln in float, damit ich damit rechnen kann
    f2 = []
    for count, value in enumerate(result):
        print("Value as String", value)
        # Tausenderpunkt entfernen!
        p = value.replace('.', '')
        # Umwandeln in float, dazu das Komma in einen Punkt umwandeln
        f = float(p.replace(',', '.'))
        # Floatwerte abspeichern
        f2.append(f) # f2.append(f)
    
    # Kontrollausgabe
    print(f2[0])
    print(f2[1])
    print(f2[2])
    
    addition = f2[0] + f2[1] + f2[2]
    print("Ergebnis Addition", addition)
    

    Ordentlich formatiert wird das mit

    import locale
    print(locale.format_string("%.2f", addition, grouping = True))
    

    Jetzt hatte ich mir noch die Frage gestellt, wie bekommt man da ein paar Zeilen weg. Ich hatte das schon mal irgendwo gemacht, wusste aber nicht mehr wo. Also Dokumentation im Netz gelesen und folgendes gefunden.

    # String Werte umwandeln in float, damit ich damit rechnen kann
    f2 = []
    for count, value in enumerate(result):
        print("Value as String", value)
        # Umwandeln in float, Tausenderpunkt entfernen und Komma in einen  Punkt umwandeln
        f = float((value.replace('.', '')).replace(',', '.'))
        # Floatwerte abspeichern
        f2.append(f) # f2.append(f)
    

    Auf den Wert (value) wird hier als erstes folgendes angewendet

    value.replace('.', '')
    

    Wir entfernen den Tausenderpunkt.

    Danach

    replace(',', '.')
    

    Das Komma für die Nachkommastellen ersetzen wir durch einen Punkt.

    Das Klammern wir mal alles entsprechend ein, verbinden das mit einem Punkt und auf den kompletten Ausdruck wenden wir ein Float an. Ferrtig 🙂

    Ok, es hat deutlich länger gedauert, bis ich das alles verstanden habe. Mehr Zeit als diesen Beitrag zu tippen, aber wie immer das Ergebnis zählt.

    Sollte hier Blödsinn stehen, oder noch besser, sollte jemand bessere Lösungen haben, bitte hier drunter. Ich freue mich über jede konstruktive Antwort.

    Ich weiß das einige Variablen Namen nicht PEP konform sind

  • 0 Stimmen
    2 Beiträge
    512 Aufrufe
    FrankMF
    Ich habe den Sonntag mal genutzt um ein wenig was einzubauen. Einmal habe ich mit datatables.net die Tabelle etwas funktionaler gestaltet. [image: 1736705735786-00a95363-1f41-4bbf-884a-34f21aea81e4-grafik.png] Man kann nun suchen, sortieren und wenn man mehr als 10 Datenpunkte hat, hat die Tabelle auch Pagination. Ein nettes Projekt, macht einiges einfacher Das nächste, ich hatte es im Video ja kurz erwähnt, mir fehlte ja noch die Restore Funktion von Restic. Ok, ist jetzt auch drin. Da die Benutzerverwaltung mittlerweile komplett eingebaut ist, werde ich demnächst meine Test Datenbanken und alles was damit zu tuen hat, aus dem Code entfernen. Brauch ich jetzt nicht mehr. Habe jetzt zwei Benutzer, einen Produktiven und einen zum Testen. Langfristig steht auch noch eine zweite Sprache auf dem Zettel. Aber, dafür muss ich Lust haben, das Thema juckt nicht so richtig
  • Flask - Erste Schritte

    Allgemeine Diskussionen flask python ki-generiert
    3
    1
    0 Stimmen
    3 Beiträge
    304 Aufrufe
    FrankMF
    Mein vorhandenes Projekt war doch etwas größer als ich gedacht hatte. Also musste ich mehr Zeit aufwenden um es nach Flask zu transferieren. Nach einiger Zeit hatte sich eine ganz ansehnliche Zahl von Dateien angesammelt und es kam wie es kommen musste, ich wusste manchmal nicht mehr, welches File ich anfassen musste. Chaos kam auf So fing ich an ein wenig zu recherchieren und kam auf die Funktion Blueprint von Flask. Mich ein wenig eingelesen, ChatGPT mal eben um ein Beispiel gebeten und dann angefangen die Applikation entsprechend umzubauen. Auch das hat Zeit gekostet. Aber, jetzt habe ich ein aufgeräumtes Projekt, was es mir wesentlich einfacher macht, daran zu arbeiten. [image: 1697954135081-5226e90d-aa20-4b20-93af-e50f8f841880-grafik.png] Wenn ihr also mal vorhabt, so was zu coden, halte ich es für sinnvoll das Projekt von Anfang an zu strukturieren. Und zum Schluss noch ein Screenshot zum Stand des Projektes. [image: 1697954267467-a7981ffc-0f93-41f4-93e2-c914fdba5e43-grafik.png] Und weiter geht es, ist nämlich noch nicht fertig
  • PyPi - Pakete ein Sicherheitsproblem?

    Python3 python pypi docker
    1
    0 Stimmen
    1 Beiträge
    139 Aufrufe
    Niemand hat geantwortet
  • Vorstellung Restic UI als PyWebIO Version

    PyWebIO restic-ui pywebio python
    7
    0 Stimmen
    7 Beiträge
    335 Aufrufe
    FrankMF
    https://gitlab.com/Bullet64/restic_ui_pywebio/-/commit/45c83cd8c38f466e427046b0f123c23def1bd7ca
  • Example Class

    Angeheftet Python3 python json
    3
    0 Stimmen
    3 Beiträge
    231 Aufrufe
    FrankMF
    In meinem PywebIO Projekt tauchte heute ein alter Bekannter auf. Wenn ich einen Eintrag (innerhalb der Liste) löschte, war das etwas durcheinander Ja, den Fehler kenne ich schon was länger und stolper immer mal wieder drüber. Heute z.B. Also mal grübeln Das mache ich, wenn ich einen Eintrag lösche case 'Yes': # delete entrie BackupList.delete((line - 1)) # save json BackupList.save_json() # Load data from filesystem BackupList.load_json() # Reload Tab Backup backup() Ich mache folgendes lösche den Eintrag speicher die Liste lade die Liste baue den Tab wieder auf Das führt aber dazu, das meine Liste die als Objekt im Speicher steht nicht aktuell ist. Im Gegenteil, da ist dann etwas Unordnung. Ich brauchte also die Möglichkeit mein Objekt backups irgendwie zurückzusetzen. Mal gegoogelt und die Dinge sind manchmal wirklich total easy # clear dict backups.clear() Das leert das Objekt und im nächsten Schritt kann ich es wieder befüllen. Lösung case 'Yes': # delete entrie BackupList.delete((line - 1)) # save json BackupList.save_json() # clear dict backups.clear() # Load data from filesystem BackupList.load_json() # Reload Tab Backup backup() Problem erledigt. Damit ich das noch finde, wenn mein Kopf das nicht mehr hergibt, notiere ich das hier.
  • Python3 - VSCodium Language Settings

    Python3 python
    3
    3
    0 Stimmen
    3 Beiträge
    230 Aufrufe
    FrankMF
    Ich habe da jetzt gestern stundenlang mit rum gespielt, insbesondere Deinstallation, Neuinstallation, VSCode Installation usw. Das ging einfach nicht. Irgendwo meine ich dann gelesen zu haben, das VSCode auf python 3.9 festgenagelt ist und deswegen so einige Dinge nicht gehen. Nagelt mich darauf nicht fest, ich bin in dieser Coding Welt kein Profi. Dann fiel mir ein, das ich schon vor einigen Monaten mal kurz einen Blick in Pycharm geworfen hatte. Gefiel mir damals gar nicht. Das habe ich heute mal auf die Platte geworfen um zu schauen, ob das vernünftig mit dem o.g. Problem umgehen kann. [image: 1662928323311-6f1c3906-05a3-4126-81d4-7fdf6aa27faa-grafik.png] Puuuh, da kann man ja noch viel mehr einstellen als bei VSCode, oder mindestens ähnlich viel. Das kann einen ganz schön überfordern. Also Stück für Stück die nächsten Tage. Was ist mir positiv aufgefallen? Wenn ich VSCodium neu installiert habe, habe ich unheimlich mit Python Versionen, pipenv usw. zu kämpfen gehabt. Bis da mein Projekt wieder lief, konnte schon mal was Zeit vergehen. Mit Pycharm Ordner ausgewählt, angeklickt das man dem Coder vertraut. Noch eine Python Version ausgewählt, danach fragt er das er eine pipenv Umgebung gefunden hat und diese nutzen möchte. Ja angeklickt und fertig. Keine zwei Minuten und das Projekt lief wieder Erster Git Commit ging auch sofort und ohne Murren. Schon mal ganz viele Pluspunkte gesammelt. Was mich aktuell beschäftigt, ist der Tab Problems, da hatte ich vorher deutlich weniger. Da muss ich mich noch was einarbeiten und schauen, wo man das alles einstellen kann. Ich halte euch auf dem Laufenden.. Vielleicht fliegt ja das VSCo** Zeug runter!? Mal sehen..
  • PyQt6 - QSettings

    Python3 python
    3
    0 Stimmen
    3 Beiträge
    486 Aufrufe
    FrankMF
    Möglichkeit 1 Das hier settings = QSettings("Frank_Mankel", "Restic_UI") erzeugt unter /home/frank/.config/Frank_Mankel/Restic_UI.conf die Konfigurationsdatei. Möglichkeit 2 Das hier settings = QSettings("Restic_UI") erzeugt unter /home/frank/.config/Restic_UI.conf die Konfigurationsdatei. Damit habe ich die grundlegenden Dinge, hoffentlich , verstanden. Für den Rest mal in die Dokumentation schauen. Sehr hilfreich war auch mal ein Blick auf die Definition der Klasse. Rechtsklick auf QSettings und dann Go to Definition class QSettings(QObject): class Scope(enum.Enum): UserScope = ... # type: QSettings.Scope SystemScope = ... # type: QSettings.Scope class Format(enum.Enum): NativeFormat = ... # type: QSettings.Format IniFormat = ... # type: QSettings.Format InvalidFormat = ... # type: QSettings.Format class Status(enum.Enum): NoError = ... # type: QSettings.Status AccessError = ... # type: QSettings.Status FormatError = ... # type: QSettings.Status [..gekürzt..]
  • Restic UI - REST Server Unterstützung

    Restic UI restic-ui restic rest-server python
    2
    0 Stimmen
    2 Beiträge
    304 Aufrufe
    FrankMF
    Die REST Unterstützung ist komplett https://gitlab.com/Bullet64/restic-ui-public/-/releases/1.1.0 Ich denke, ein wenig Dokumentation wäre noch gut