Récuperer des emails, problèmes d'encodages - Python - Programmation
Marsh Posté le 09-12-2008 à 20:44:41
Bon alors j'ai trouvé
1. certains mails sont de la forme encode(nom + mail) et d'autres encode(nom) + mail :
j'ai séparé les 2 cas avec des tests
2. certains mails sont mal codés :
j'ai pas trouvé d'autre solution que de tester et faire les corrections spécifiquement
Voila le code si ça interesse des gens :
Code :
|
Du coup ne me reste qu'un problème mineur : j'enregistre le fichier en utf-8 alors que excel l'ouvre en ansi (et c'est moche), et je trouve pas l'encoding ansi en python ...
Marsh Posté le 09-12-2008 à 23:50:48
J'ai vraiment pas le courage de me plonger dans un bazard pareil, mais je tiens juste à mentionner que <> est déprécié (et complètement retiré de Python 3), et que optparse est largement supérieur à getopt (plus pratique, plus flexible et plus puissant).
Marsh Posté le 09-12-2008 à 17:01:01
Bonjour à tous,
Je cherche à réaliser un script afin de parser une partie de mes emails gmails afin d'en extraire certaines information (expéditeur, sujet, date et heure) afin de générer des statistiques.
J'ai à peu près réussi à me débrouiller tout seul jusqu'ici (c'est ma première utilisation de python) en fouillant la doc et le net grace à l'ami (?) google, mais je bloque maintenant.
J'arrive à extraire les données brutes et les parser pour les mettre dans un tableau excel en csv. Là où je bloque, c'est sur l'encodage des noms et des sujets. Un petit bout de code sera peut-être plus explicite :
Là où je pèche, c'est que des fois ça décode, des fois ça décode pas ....
exemple :
"=?ISO-8859-1?Q?Micha=EBl_Jxxxt?=" <michael.jxxxt@gmail.com>
Non converti
=?ISO-8859-1?Q?"Micha=EBl_Jxxxt"_<michael.jxxxt@gmail.com>?=
Michaël Jxxxt
Converti
"=?ISO-8859-1?Q?Timoth=E9e_Cxxxl?=" <timothee.cxxxl@googlemail.com>
Non converti
Ensuite j'ai un autre soucis : l'écriture dans le csv ne semble pas prendre apprécier les différents encodage et je suis assez perdu :
Traceback (most recent call last):
File "I:\mails\xxxx.py", line 200, in <module>
out.writerow([str(_date[0]), str(_date[1]), str(_date[2]), str(datetime.date
(_date[0], _date[1], _date[2]).weekday()), str(_date[3]), str(_date[4]), str(_da
te[5]), str(mytime), _name, _email, subject])
UnicodeEncodeError: 'ascii' codec can't encode character u'\xff' in position 9:
ordinal not in range(128)
Quel est le format standard d'un fichier csv pour excel ? (j'ai pas trouvé dans l'aide de Excel).
Voila, merci d'avance pour votre aide, si je n'ai pas posé la question de la bonne manière et/ou si il y a besoin d'info demandez et j'essaierai d'être le plus précis possible.
Message édité par The_chosen_one le 09-12-2008 à 17:02:07