Skip to content

Python - Formatumwandlung str -> float

Python3
  • 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

  • Pycharm - Interpreter Settings

    Python3
    1
    0 Stimmen
    1 Beiträge
    50 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    3 Beiträge
    147 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.

    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.

    a7981ffc-0f93-41f4-93e2-c914fdba5e43-grafik.png

    Und weiter geht es, ist nämlich noch nicht fertig 😀

  • Python & Redis-Datenbank

    Verschoben Linux
    3
    0 Stimmen
    3 Beiträge
    97 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.

  • PyPi - Pakete ein Sicherheitsproblem?

    Python3
    1
    0 Stimmen
    1 Beiträge
    74 Aufrufe
    Niemand hat geantwortet
  • ResticUI with PyWebIO - Repo

    PyWebIO
    1
    0 Stimmen
    1 Beiträge
    84 Aufrufe
    Niemand hat geantwortet
  • PyWebIO - Footer bearbeiten

    PyWebIO
    1
    0 Stimmen
    1 Beiträge
    79 Aufrufe
    Niemand hat geantwortet
  • Python - mehrsprachiges GUI

    Python3
    1
    0 Stimmen
    1 Beiträge
    121 Aufrufe
    Niemand hat geantwortet
  • Python und GUI

    Verschoben Python3
    1
    0 Stimmen
    1 Beiträge
    156 Aufrufe
    Niemand hat geantwortet