Skip to content

Python - Formatumwandlung str -> float

Python3
1 1 960
  • 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
    3 Beiträge
    47 Aufrufe
    frankm@nrw.socialF
    @guerda Und vor allen Dingen muss es Spaß machen.
  • FreeOTP+ Datenumzug nach Bitwarden Authenticator

    Python3 ki-generiert python
    1
    0 Stimmen
    1 Beiträge
    241 Aufrufe
    Niemand hat geantwortet
  • Flask - Erste Schritte

    Allgemeine Diskussionen flask python ki-generiert
    3
    1
    0 Stimmen
    3 Beiträge
    317 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
  • Python & Redis-Datenbank

    Verschoben Linux python redis
    3
    0 Stimmen
    3 Beiträge
    217 Aufrufe
    FrankMF
    Heute dann die nächste Herausforderung. Mein JSON soll so aussehen, damit ich das entsprechend erweitern kann. Stocks {0: {'stockname': 'Deutsche Telekom Aktie', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 100}, 1: {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}} Die Daten sollen wie oben schon ausprobiert, in einer Redis Datenbank liegen. So weit auch kein großes Problem. ABER, der Zugriff auf diese Daten war dann meine nächste Hürde Ok, ich habe also mehrere Einträge im JSON File bzw. in der Datenbank. Wie komme ich da nun wieder dran. Ein paar später dann die Lösung. Wie komme ich an den einzelnen Eintrag, also über den Index?? r1.json().get('stocks', 1) Gibt als Ergebnis {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50} Ok, das passt schon mal. Somit kann man dann gewohnt auf die einzelnen Elemente zugreifen. print("TESTING", testing['stockname']) Ausgabe TESTING Henkel Ok, Teil 1 erledigt. Jetzt habe ich ja irgendwann mehrere Elemente in der Liste und brauch dann den letzten Index , um damit was machen zu können. Also, z.B. durch die Daten zu loopen. objkeys = r1.json().objkeys('stocks') print("Objkeys", objkeys) Ausgabe Objkeys ['0', '1'] Ok, kommt eine Liste des Index zurück. Damit kann man arbeiten Ich hatte dann zum Testen mittels einer while Schleife die Daten geladen, aber jetzt beim Tippen klingelt es und wir machen das schön mit enumerate @staticmethod def load(): data = {} for count, value in enumerate(objkeys): testing = r1.json().get('stocks', count) data[count] = { "stockname": testing['stockname'], "wkn1": testing['wkn1'], "wkn2": testing['wkn2'], "quantity": testing['quantity']} return data Somit habe ich die Daten aus der Redis Datenbank in einem Objekt und kann damit arbeiten.
  • Vorstellung Restic UI als PyWebIO Version

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

    PyWebIO pywebio python
    1
    1
    0 Stimmen
    1 Beiträge
    162 Aufrufe
    Niemand hat geantwortet
  • PyWebIO

    Angeheftet PyWebIO pywebio python
    1
    1
    0 Stimmen
    1 Beiträge
    247 Aufrufe
    Niemand hat geantwortet
  • Python - Match-Case Statement

    Python3 python
    1
    0 Stimmen
    1 Beiträge
    163 Aufrufe
    Niemand hat geantwortet