src/ztfy/utils/unicode.py
branchZTK-1.1
changeset 238 26773e68d3d3
parent 148 d3668ecd9137
child 256 cb99848d8334
equal deleted inserted replaced
237:fca4a296d89e 238:26773e68d3d3
    80             _unicodeTransTable[code] = char
    80             _unicodeTransTable[code] = char
    81 
    81 
    82 _fillUnicodeTransTable()
    82 _fillUnicodeTransTable()
    83 
    83 
    84 
    84 
    85 def translateString(s, escapeSlashes=False, forceLower=True, spaces=' ') :
    85 def translateString(s, escapeSlashes=False, forceLower=True, spaces=' ', keep_chars='_-.'):
    86     """Remove extended characters from string and replace them with 'basic' ones
    86     """Remove extended characters from string and replace them with 'basic' ones
    87     
    87     
    88     @param s: text to be cleaned.
    88     @param s: text to be cleaned.
    89     @type s: str or unicode
    89     @type s: str or unicode
    90     @param escapeSlashes: if True, slashes are also converted
    90     @param escapeSlashes: if True, slashes are also converted
    98         s = string.replace(s, "\\", "/").split("/")[-1]
    98         s = string.replace(s, "\\", "/").split("/")[-1]
    99     s = s.strip()
    99     s = s.strip()
   100     if isinstance(s, str):
   100     if isinstance(s, str):
   101         s = unicode(s, "utf8", "replace")
   101         s = unicode(s, "utf8", "replace")
   102     s = s.translate(_unicodeTransTable)
   102     s = s.translate(_unicodeTransTable)
   103     s = ''.join([a for a in s.translate(_unicodeTransTable) if a.replace(' ', '-') in (string.ascii_letters + string.digits + '_-.')])
   103     s = ''.join([a for a in s.translate(_unicodeTransTable)
       
   104                  if a.replace(' ', '-') in (string.ascii_letters + string.digits + (keep_chars or ''))])
   104     if forceLower:
   105     if forceLower:
   105         s = s.lower()
   106         s = s.lower()
   106     if spaces != ' ':
   107     if spaces != ' ':
   107         s = s.replace(' ', spaces)
   108         s = s.replace(' ', spaces)
   108     return s
   109     return s