Verdammtes Decoding

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

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"
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

ich lese es aber so aus einer textdatei, die ich selber nicht mache... :(
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Welches Byte liest Du denn?
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

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
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Antworten