Seite 1 von 1

Txt-Datei nach Zahlen durchsuchen und einer Liste hinzufügen

Verfasst: Sonntag 5. Dezember 2021, 14:36
von MariusAstriata
Hallo,
ich möchte eine txt-Datei laden, die aus zufälligen Wörtern und Zahlen besteht, und die Zeilen der Datei nach Zahlen durchsuchen. Die Zahlen sollen dann in einer neuen Liste gespeichert werden.
Bisher habe ich:

Code: Alles auswählen

def laden(fileName):
        with open(fileName, "r") as fileObj:
            words = fileObj.read().splitlines() 
            x = []
            for i in words:
                try:
                    if  i.isdecimal():
                        x.append(float(i))
                except ValueError:
                    continue
            print(x)
            
laden("test.txt")
Meine txt-Datei kann wie folgt aussehen:
45.6
Test
34
Test
Test
45.5
3452.6
2423.3
45
4254635

Allerdings werden so nur int-Zahlen im String-Format der Liste hinzugefügt, aber keine float-Zahlen.
Wie schaffe ich es, dass sowohl int als auch float der Liste hinzugefügt werden?

Re: Txt-Datei nach Zahlen durchsuchen und einer Liste hinzufügen

Verfasst: Sonntag 5. Dezember 2021, 14:51
von __deets__
Indem du das isdecimal weglässt, so das einfach immer versucht wird, ein float zu erzeugen. Und (in ausreichender Näherung) sind floats die Übermenge von integern.

Re: Txt-Datei nach Zahlen durchsuchen und einer Liste hinzufügen

Verfasst: Sonntag 5. Dezember 2021, 14:58
von sparrow
Etwas stimmt mit deinen EInrückungen nicht. Eingerückt wird immer mit 4 Leerzeichen. Keine Tabs, keine 8 Leerzeichen.

Ich halte es für falsch, eine Liste von Zeilen "words" zu nennen. Vor allem dann, wenn gar nicht immer Wörter in ihnen sind, sondern Zahlen.

Du brauchst den Inhalt der Datei nicht erst lesen und dann in Zeilen zu splitten. Wenn du über fileObj iterierst, sind das bereits die Zeilen.

Code: Alles auswählen

for line in fileObj:
Warum prüfst du ob etwas isdecimal() ist?
Wenn du eine Zeichenkette mit float in einen Float casten willst, wird immer ein ValueError geworfen, wenn das fehl schlägt. Wenn du vorher alles aussortierst, was etwas enthält das keine Ziffer ist (als auch alles, was einen Punkt enthält) dann kommt natürlich nie ein Float an.

Re: Txt-Datei nach Zahlen durchsuchen und einer Liste hinzufügen

Verfasst: Sonntag 5. Dezember 2021, 15:23
von MariusAstriata
Vielen Dank! Hatte anscheinend einen Denkfehler. Hab es mit euren Tipps hinbekommen :geek:

Re: Txt-Datei nach Zahlen durchsuchen und einer Liste hinzufügen

Verfasst: Sonntag 5. Dezember 2021, 15:25
von __blackjack__

Code: Alles auswählen

#!/usr/bin/env python3
from more_itertools import map_except


def main():
    with open("test.txt", encoding="ascii") as lines:
        numbers = list(map_except(float, lines, ValueError))
    print(numbers)


if __name__ == "__main__":
    main()