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 Lschungen':
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.