Seite 1 von 1

Verdammtes Decoding

Verfasst: Montag 10. September 2018, 17:49
von DMD-OL
hat jemand vielleicht ne lösung wie ich das richtig decoden kann:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

kategorie = "Artikel L”schungen"


print kategorie.decode("utf-8")
print kategorie.decode("latin-1")
ich möchte sowas gern mit umlauten in meine datenbank schreiben,
heißt so: "Artikel Löschungen"

Re: Verdammtes Decoding

Verfasst: Montag 10. September 2018, 18:12
von __blackjack__
@DMD-OL: Das hat nichts mit dekodieren zu tun. Das was Du haben möchtest steht einfach nicht in der (Byte-)-Zeichenkette. Da musst Du schon 'Artikel Löschungen' hinschreiben und nicht anstelle des ö ein typographisches Anführungszeichen. Und dann brauchst Du auch nichts selbst dekodieren, sondern kannst das bereits dem Compiler überlassen wenn Du ein Unicode-Zeichenliteral verwendest.

Re: Verdammtes Decoding

Verfasst: Montag 10. September 2018, 19:04
von DMD-OL
ich lese es aber so aus einer textdatei, die ich selber nicht mache... :(

Re: Verdammtes Decoding

Verfasst: Montag 10. September 2018, 19:38
von Sirius3
Welches Byte liest Du denn?

Re: Verdammtes Decoding

Verfasst: Mittwoch 12. September 2018, 09:59
von DMD-OL

Code: Alles auswählen

V 090818Artikelupdate 2018-08-08                Artikel L”schungen                      KSB SE & Co. KG aA          (26OUA)04EUR
A;L;T20295;;;;;;;;;;;
A;L;T20296;;;;;;;;;;;
A;L;T20297;;;;;;;;;;;
A;L;T20298;;;;;;;;;;;
A;L;T20299;;;;;;;;;;;
A;L;T20300;;;;;;;;;;;
A;L;T7037;;;;;;;;;;;
A;L;T7114;;;;;;;;;;;
A;L;T7115;;;;;;;;;;;
A;L;T7177;;;;;;;;;;;
A;L;T7178;;;;;;;;;;;
A;L;T7179;;;;;;;;;;;
A;L;T7180;;;;;;;;;;;
A;L;T7181;;;;;;;;;;;
A;L;T7182;;;;;;;;;;;
A;L;T7183;;;;;;;;;;;
A;L;T7184;;;;;;;;;;;
A;L;T7185;;;;;;;;;;;
A;L;T7187;;;;;;;;;;;
A;L;T7188;;;;;;;;;;;
A;L;T2126;;;;;;;;;;;
A;L;T2127;;;;;;;;;;;
A;L;T2128;;;;;;;;;;;
A;L;T2129;;;;;;;;;;;
A;L;T2130;;;;;;;;;;;
A;L;01026354;;;;;;;;;;;
A;L;01026355;;;;;;;;;;;
A;L;01026357;;;;;;;;;;;
mein code:
size = 1024 * 48

Code: Alles auswählen

if os.path.isfile(work[1]):
    first_line = self.fh.readline().splitlines()
    kategorie = re.split('\s{2,}', first_line[0])[1]
    lieferant = re.split('\s{2,}', first_line[0])[2]
    if kategorie == u'Artikel L”schungen':
        print "'LÖSCHEN: '{}'".format(work[1])
        for ele in chunks():
            self.fh.seek(ele[0])
            self.prog_varfile.set(ele[0])
            self.daten.set("Verarbeitet:  " + str(ele[0]) + " Bytes / " +
                           str(filesize) + " Bytes")
            self.sizecall.set("In Bearbeitung:  " + str(size) + " Bytes")
            data = self.fh.read(ele[1]).splitlines()
            print data
            self.zeit_var.set("Verbleibend: " + str(teiler) + " Prozesse")
            teiler -= 1
            if self.run_string is False:
                break

Re: Verdammtes Decoding

Verfasst: Mittwoch 12. September 2018, 10:26
von Sirius3
Auf `work[1]` wird geprüft, ob das eine Datei ist, aber dann nichts mehr damit gemacht?
Es ist selten sinnvoll, dass Fileobjekte an eine Instanz gebunden werden, woher kommt hier `self.fh`?
Ein `splitlines` auf eine einzelne Zeile ist ziemlich unintuitiv.
Was macht denn die Funktion `chunks`? Sieht so aus als ob die was mit der zu lesenden Datei zu tun hat, bekommt aber keine Parameter?
`ele` ist für mich ein kryptischer Name? Was bedeutet der?
Für Strings benutzt man am besten format und stückelt die nicht mit + zusammen.
Statt `is False` würde man `not` benutzen. Da sich run_string aber nie ändert, ist die Abfrage an der Stelle wahrscheinlich falsch.

Zum eigentlichen Problem: die Frage war, welchen Bytewert ” in der Datei hat.