k666 dites non à petitmou | j'ai un code ici qui a fonctionne:
Code :
- def giveGoodName(oldvalue):
- # first strip accents and stuff
- s = oldvalue.decode("utf-8" )
- try:
- s = s.translate(noaccents.unaccented_map())
- except:
- ns = ""
- for c in s:
- if ((ord(c) >= 65 and ord(c) < 91) or (ord(c) >= 97 and ord(c) < 123) or (c == " " )):
- ns = ns + c
- s = ns
- # then go uppercase
- s = s.upper()
- # then strip all non alfanum
- out = ""
- for c in s:
- if ((ord(c) >= 65) and (ord(c) < 91)) or (c == " " ):
- #print "c = "+ c + "; ord(c) = "+str(ord(c))
- out = out + c
- return out
|
avec aussi ca:
puis noaccents.py
Code :
- # $Id$
- # -*- coding: latin-1 -*-
- # use a dynamically populated translation dictionary to remove accents
- # from a string
- import unicodedata, sys
- CHAR_REPLACEMENT = {
- # latin-1 characters that don't have a unicode decomposition
- 0xc6: u"AE", # LATIN CAPITAL LETTER AE
- 0xd0: u"D", # LATIN CAPITAL LETTER ETH
- 0xd8: u"OE", # LATIN CAPITAL LETTER O WITH STROKE
- 0xde: u"Th", # LATIN CAPITAL LETTER THORN
- 0xdf: u"ss", # LATIN SMALL LETTER SHARP S
- 0xe6: u"ae", # LATIN SMALL LETTER AE
- 0xf0: u"d", # LATIN SMALL LETTER ETH
- 0xf8: u"oe", # LATIN SMALL LETTER O WITH STROKE
- 0xfe: u"th", # LATIN SMALL LETTER THORN
- }
- ##
- # Translation dictionary. Translation entries are added to this
- # dictionary as needed.
- class unaccented_map(dict):
- ##
- # Maps a unicode character code (the key) to a replacement code
- # (either a character code or a unicode string).
- def mapchar(self, key):
- ch = self.get(key)
- if ch is not None:
- return ch
- de = unicodedata.decomposition(unichr(key))
- if de:
- try:
- ch = int(de.split(None, 1)[0], 16)
- except (IndexError, ValueError):
- ch = key
- else:
- ch = CHAR_REPLACEMENT.get(key, key)
- self[key] = ch
- return ch
- if sys.version >= "2.5":
- # use __missing__ where available
- __missing__ = mapchar
- else:
- # otherwise, use standard __getitem__ hook (this is slower,
- # since it's called for each character)
- __getitem__ = mapchar
|
Message édité par k666 le 16-08-2007 à 21:02:06
|