hallo, ich bin leider nicht so der überflieger was das programmieren und gerade diese iso, utf, unicode-geschichte stellt mir echt jedes mal wieder ein bein...
ich habe ein script, dass mir google-alerts auf meinen rechner holt.
wenn umlaute dabei sind, sieht das z.B. so aus:
=?ISO-8859-1?Q?Google_Alert_=2D_Tim_M=E4lzer?=
mein (mac-)terminal sagt mir bei ENV, dass es LANG=de_DE.UTF-8 ist. beim script habe ich es mit utf-8-encoding und natürlich mit iso-8859-1 probiert.
kann mir jemand sagen, was ich da hier machen muss, da alle meine versuche fehlgeschlagen sind?
iso, utf, newbie
Wenn Du die Google-Mail als ganzes verarbeiten möchtest (würde ich empfehlen), dann schau Dir die Module email & Co. an. Die handhaben alle Aspekte, auch das Umwandeln der verschiedenen Kodierungen.
Falls Du nur diesen einen String dekodiert haben möchtest, ist das modul quopri wahrscheinlich die Lösung:
Gruß
Karsten
Falls Du nur diesen einen String dekodiert haben möchtest, ist das modul quopri wahrscheinlich die Lösung:
Code: Alles auswählen
>>> import quopri
>>> print quopri.decodestring("=?ISO-8859-1?Q?Google_Alert_=2D_Tim_M=E4lzer?=")
=?ISO-8859-1?Q?Google_Alert_-_Tim_Mälzer?
Karsten
Wenn man nur die Zeichenkette, ohne den Rest der Mail hat, kann man zum Beispiel `email.Header.decode_header()` verwenden, um eine Zeichenkette und die Kodierung zu ermitteln:
Code: Alles auswählen
In [29]: subject = '=?ISO-8859-1?Q?Google_Alert_=2D_Tim_M=E4lzer?='
In [30]: email.Header.decode_header(subject)
Out[30]: [('Google Alert - Tim M\xe4lzer', 'iso-8859-1')]
Was ich ja nicht checke ist, was ich machen muss, damit das stimmt.BlackJack hat geschrieben:Code: Alles auswählen
In [29]: subject = '=?ISO-8859-1?Q?Google_Alert_=2D_Tim_M=E4lzer?=' In [30]: email.Header.decode_header(subject) Out[30]: [('Google Alert - Tim M\xe4lzer', 'iso-8859-1')]
Code: Alles auswählen
subject[subject.find('Alert - ')+8:] == "Tim Mälzer"
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Naja, ist ja auch nicht so kompliziert, eine Möglichkeit das zu machen wäre:
(wobei es natürlich elegant wäre, den String erstmal in Unicode zu verwandeln und dann tatsächlich Unicode-Strings zu vergleichen)
Code: Alles auswählen
email.Header.decode_header(subject)[0][0].endswith('Tim Mälzer')
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice