Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2780 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [fonction] pour convertir les accents et choses non ascii ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[fonction] pour convertir les accents et choses non ascii ?

n°1584865
k666
dites non à petitmou
Posté le 10-07-2007 à 16:34:51  profilanswer
 

salut
je cherche une fonction ou quoi que ce soit pour virer/convertir les accents et characteres non ascii, par exemple:
 
bébé ==> bebe
ñoqui ==> noqui
 
etc....

mood
Publicité
Posté le 10-07-2007 à 16:34:51  profilanswer
 

n°1594335
gzii
court-circuit
Posté le 01-08-2007 à 13:01:29  profilanswer
 

Je ne sais pas si ça existe déjà mais c'est rapide à faire, avec un petit tableau de 256 éléments par exemple.

n°1594371
rufo
Pas me confondre avec Lycos!
Posté le 01-08-2007 à 14:24:28  profilanswer
 

qq chose dans ce goût là :  
strtr($Chaine, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",                     "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"
);


Message édité par rufo le 01-08-2007 à 14:24:38
n°1594630
gzii
court-circuit
Posté le 01-08-2007 à 20:52:51  profilanswer
 

Oui si ensuite tu n'oublies pas de nettoyer le reste. Et en espérant que tu n'aies pas plusieurs pages de codes différentes (dos, mac, windows, ...).

n°1594712
rufo
Pas me confondre avec Lycos!
Posté le 02-08-2007 à 09:14:01  profilanswer
 

ben pour les autres (les autres caractères qui ne sont pas des caractères accentués), je pense qu'on peut que les virer => une boucle sur chaque caractère de la chaîne et on gare que les caractères dont le code ascii [0 ; 255].

n°1594794
gzii
court-circuit
Posté le 02-08-2007 à 10:58:44  profilanswer
 

Oui, par exemple si tu trouves un code ascii 257 :lol:

n°1594818
rufo
Pas me confondre avec Lycos!
Posté le 02-08-2007 à 11:30:01  profilanswer
 

je pensais au traitement des caractères en ISO-8859-1, UTF-8...

n°1600197
k666
dites non à petitmou
Posté le 16-08-2007 à 20:57:16  profilanswer
 

j'ai un code ici qui a fonctionne:
 

Code :
  1. def giveGoodName(oldvalue):
  2.         # first strip accents and stuff
  3.         s = oldvalue.decode("utf-8" )
  4.         try:
  5.                 s = s.translate(noaccents.unaccented_map())
  6.         except:
  7.                 ns = ""
  8.                 for c in s:
  9.                         if ((ord(c) >= 65 and ord(c) < 91) or (ord(c) >= 97 and ord(c) < 123) or (c == " " )):
  10.                                 ns = ns + c
  11.                 s = ns
  12.         # then go uppercase
  13.         s = s.upper()
  14.         # then strip all non alfanum
  15.         out = ""
  16.         for c in s:
  17.                 if ((ord(c) >= 65) and (ord(c) < 91)) or (c == " " ):
  18.                         #print "c = "+ c + "; ord(c) = "+str(ord(c))
  19.                         out = out + c
  20.         return out


 
avec aussi ca:
 
puis noaccents.py
 

Code :
  1. # $Id$
  2. # -*- coding: latin-1 -*-
  3. # use a dynamically populated translation dictionary to remove accents
  4. # from a string
  5. import unicodedata, sys
  6. CHAR_REPLACEMENT = {
  7.         # latin-1 characters that don't have a unicode decomposition
  8.         0xc6: u"AE", # LATIN CAPITAL LETTER AE
  9.         0xd0: u"D",  # LATIN CAPITAL LETTER ETH
  10.         0xd8: u"OE", # LATIN CAPITAL LETTER O WITH STROKE
  11.         0xde: u"Th", # LATIN CAPITAL LETTER THORN
  12.         0xdf: u"ss", # LATIN SMALL LETTER SHARP S
  13.         0xe6: u"ae", # LATIN SMALL LETTER AE
  14.         0xf0: u"d",  # LATIN SMALL LETTER ETH
  15.         0xf8: u"oe", # LATIN SMALL LETTER O WITH STROKE
  16.         0xfe: u"th", # LATIN SMALL LETTER THORN
  17.         }
  18. ##
  19. # Translation dictionary.  Translation entries are added to this
  20. # dictionary as needed.
  21. class unaccented_map(dict):
  22.         ##
  23.         # Maps a unicode character code (the key) to a replacement code
  24.         # (either a character code or a unicode string).
  25.         def mapchar(self, key):
  26.                 ch = self.get(key)
  27.                 if ch is not None:
  28.                         return ch
  29.                 de = unicodedata.decomposition(unichr(key))
  30.                 if de:
  31.                         try:
  32.                                 ch = int(de.split(None, 1)[0], 16)
  33.                         except (IndexError, ValueError):
  34.                                 ch = key
  35.                 else:
  36.                         ch = CHAR_REPLACEMENT.get(key, key)
  37.                 self[key] = ch
  38.                 return ch
  39.         if sys.version >= "2.5":
  40.                 # use __missing__ where available
  41.                 __missing__ = mapchar
  42.         else:
  43.                 # otherwise, use standard __getitem__ hook (this is slower,
  44.                 # since it's called for each character)
  45.                 __getitem__ = mapchar


Message édité par k666 le 16-08-2007 à 21:02:06
n°1601911
pafpafpaf
Posté le 21-08-2007 à 18:29:14  profilanswer
 

Ma petite contribution pour virer les accents, en 2 lignes (trouvé sur le Web quelquepart je ne sais plus où) :
 

Code :
  1. import unicodedata
  2. print unicodedata.normalize("NFKD", u"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ" ).encode("ascii", "ignore" )


 
Résultat :

AAAAAAaaaaaaOOOOOoooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [fonction] pour convertir les accents et choses non ascii ?

 

Sujets relatifs
[C] Fonction niveau debutant[Excel] extraire une valeur d'un tableau en fonction de 2 index
[resolu]fonction qui modifie els paramètrs d'entréehtmlentities et les chemins comprenant des accents
Frames et fonction setTimeoutTypage strict pour parametres de fonction : question sur cas précis
Adapter mon image de fond en fonction de la résolution de l'écranConvertir plusieurs fichiers en UTF8?
Fonction js avec paramètre PHP[python] liste d'arguments de fonction ?
Plus de sujets relatifs à : [fonction] pour convertir les accents et choses non ascii ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR