Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / Caractères Accentués!

Caractères Accentués!

Remonter à Forum général Python
  • Caractères Accentués!

    Envoyé par foobar le 29 Décembre 2005 à 09:42
    Bonjour à tous (... ceux qui bossent encore ;o)),

    J'ai fait un script qui lit un fichier CSV, et ligne par ligne il
    alimente plusieurs tableaux de dico qui sont ni plus ni moins que mes
    futures tables MySQL et leurs champs respectifs. En Clair, une grosse
    table EXCEL, qui devient plusieurs tables avec relation, etc.

    Puis, j'alimente les tables à partir des dico, etc.

    Mon seul souci c'est :

    - j'ai bien déclaré en entête de script que l'encodage iso-8859-1,
    voire latin-1, mais rien n'y fait, la valeur des caractères accentués
    est bien stockée dans le dico sous forme de '\xe8', cela dit, si je
    fais afficher la valeur en pointant dessus par 'print' le caractères
    est bien restitué, mais si je forme ma syntaxe d'insert pour MySQL, le
    slash est enlevé et le texte n'est pas joli! normal! Comment résoudre
    ce souci d'encodage?!

    J'ai essayé unicode, decode, etc. Et avoue que c'est assez ésotérique?!

    Quelqu'un a-t-il une soluce pour ces pu... d'accents?!

    merci.
    • Re: Caractères Accentués!

      Envoyé par macadames le 30 Décembre 2005 à 09:47
      Pourquoi traduire les accents en valeur hexa ? c'est pour MySQL ? ...


      dans cette logique j'essaierai juste un replace('\x5C','\x5C\x5C') avant de traduire le reste en hexa, même si je vois pas l'intérêt (sauf peut-être pour les quote ?).
    • Re: Caractères Accentués!

      Envoyé par foobar le 30 Décembre 2005 à 16:27
      Salut,

      Merci pour ta réponse. Mais, je ne traduis rien du tout moi ;o) Dans mon fichier CSV, les mots contiennent des accents, lorsque je les récupère et que je les place dans un dico ou tableau peut importe le résultat sera le même, et bien si je fais un pprint.pprint(mon_tableau) il m'affiche des '\xe8'moi, je n'ai rien fait ;o) c'est là mon souci, je prends des accents je veux qu'on me conserve mes accents temps que je n'ai rien demandé ;o) Si j'accède de manière pointée au dico ou tableau et que je fais un print : bingo je retrouve à l'écran mon accent, mais si je l'injecte dans MySQL il me sucre mon '\' et paf (-le chien-) je me retrouve avec un mot écorché!
      Pourquoi, qu'ai-je oublié pour que Python me traduise TOUT SEUL mon accent lu dans mon CSV en '\xe8' et comment faire pour que je puisse le récupérer, ou alors pour que Python ne le fasse pas ;o)

      Ouala. Cette fois j'aurai peut-être été plus clair?! ;o)
    • Re: Caractères Accentués!

      Envoyé par florent le 2 Janvier 2006 à 09:47
      Si tu as accès à la chaine de caractère ligneCSV dans ton script, essaie:

          ligneCSV.encode('windows-1252', 'replace')


      Si ça ne te génère pas d'exception ça peut suffir.

      Sinon convertit tout en unicode, supprime de manière intelligente les accents avec:
          unicodedata.normalize('NFD', caractereUnicode)

      Puis encode comme indiqué précédemment ou en Latin-1 comme tu le faisais avant.
Rendu par Ploneboard