Seite 1 von 1

Ansi zu Integer

Verfasst: Samstag 15. Mai 2021, 17:02
von Django Unchained
Hi,
weis zufällig irgendjemand wie ich die Zeichen einer Datei mit Ansi Decodierung in Integers umwandeln kann?
Mein derzeitiger Code:
t='file'
with open(t, 'r') as f:
for i in range(238183):
b.append(f.readline())
res = [ord(ele) for sub in b for ele in sub]

Re: Ansi zu Integer

Verfasst: Samstag 15. Mai 2021, 17:28
von __blackjack__
@Django Unchained: Was ist denn bitte „Ansi Decodierung“? Der Code funktioniert ganz offensichtlich nicht, denn weder `b` noch das eine `sub` sind definiert. Das in *einer* „list comprehension“ zweimal der Name `sub` für verschiedene Objekte vorkommt ist mehr als unübersichtlich.

An den Namen sollte man auch dringend arbeiten.

Wo kommt die magische 238183 her? Und `readline()` ist hier so ziemlich das ineffizienteste was man machen kann. Die Methode macht nur ganz ganz selten Sinn.

Re: Ansi zu Integer

Verfasst: Samstag 15. Mai 2021, 19:25
von rogerb
versuch doch mal:

Code: Alles auswählen

result = []
t='file'
with open(t, 'r', encoding='ansi') as ansi_file:
    lines = ansi_file.readlines()

for line in lines:
    for character in line:
        result.append(ord(character))
Information bzgl. encoding:
https://docs.python.org/3/library/functions.html#open

Re: Ansi zu Integer

Verfasst: Samstag 15. Mai 2021, 19:42
von __blackjack__
Bitte nicht "ansi" als Kodierung verwenden. Das ist krank, kaputt, und funktioniert nur unter Windows, weil es da genug Vollhonks gibt, die der Meinung sind "ANSI" sei eine Kodierung und Python sich *nur auf Windows* der Dummheit der Massen gebeugt hat. Python ist halt ein bisschen rückratlos. 🙂

Re: Ansi zu Integer

Verfasst: Samstag 15. Mai 2021, 19:49
von narpfel
`utf-∞` ist immer noch das beste Encoding:

Code: Alles auswählen

In [1]: with open("foo", "w", encoding="utf-∞") as file:
   ...:     file.write("Bestes Encoding: utf-∞\n")
   ...:

In [2]: !cat foo
Bestes Encoding: utf-∞