fork(8) download
  1. # -*- coding:utf8 -*-
  2.  
  3. # Build Vietnamese characters to ASCII characters dictionary
  4. VN_UNI_ASC = {u'á':'a', u'à':'a', u'ả':'a', u'ã':'a', u'ạ':'a',
  5. u'ắ':'a', u'ằ':'a', u'ẳ':'a', u'ẵ':'a', u'ặ':'a', u'ă':'a',
  6. u'ấ':'a', u'ầ':'a', u'ẩ':'a', u'ẫ':'a', u'ậ':'a', u'â':'a',
  7. u'é':'e', u'è':'e', u'ẻ':'e', u'ẽ':'e', u'ẹ':'e',
  8. u'ế':'e', u'ề':'e', u'ể':'e', u'ễ':'e', u'ệ':'e', u'ê':'e',
  9. u'í':'i', u'ì':'i', u'ỉ':'i', u'ĩ':'i', u'ị':'i',
  10. u'ó':'o', u'ò':'o', u'ỏ':'o', u'õ':'o', u'ọ':'o',
  11. u'ố':'o', u'ồ':'o', u'ổ':'o', u'ỗ':'o', u'ộ':'o', u'ô':'o',
  12. u'ớ':'o', u'ờ':'o', u'ở':'o', u'ỡ':'o', u'ợ':'o', u'ơ':'o',
  13. u'ú':'u', u'ù':'u', u'ủ':'u', u'ũ':'u', u'ụ':'u',
  14. u'ứ':'u', u'ừ':'u', u'ử':'u', u'ữ':'u', u'ự':'u', u'ư':'u',
  15. u'ý':'y', u'ỳ':'y', u'ỷ':'y', u'ỹ':'y', u'ỵ':'y',
  16. u'đ':'d', u'Đ':'D',
  17. u'Á':'A', u'À':'A', u'Ả':'A', u'Ã':'A', u'Ạ':'A',
  18. u'Ắ':'A', u'Ằ':'A', u'Ẳ':'A', u'Ẵ':'A', u'Ặ':'A', u'Ă':'A',
  19. u'Ấ':'A', u'Ầ':'A', u'Ẩ':'A', u'Ẫ':'A', u'Ậ':'A', u'Â':'A',
  20. u'É':'E', u'È':'E', u'Ẻ':'E', u'Ẽ':'E', u'Ẹ':'E',
  21. u'Ế':'E', u'Ề':'E', u'Ể':'E', u'Ễ':'E', u'Ệ':'E', u'Ê':'E',
  22. u'Í':'I', u'Ì':'I', u'Ỉ':'I', u'Ĩ':'I', u'Ị':'I',
  23. u'Ó':'O', u'Ò':'O', u'Ỏ':'O', u'Õ':'O', u'Ọ':'O',
  24. u'Ố':'O', u'Ồ':'O', u'Ổ':'O', u'Ỗ':'O', u'Ộ':'O', u'Ô':'O',
  25. u'Ớ':'O', u'Ờ':'O', u'Ở':'O', u'Ỡ':'O', u'Ợ':'O', u'Ơ':'O',
  26. u'Ú':'U', u'Ù':'U', u'Ủ':'U', u'Ũ':'U', u'Ụ':'U',
  27. u'Ứ':'U', u'Ừ':'U', u'Ử':'U', u'Ữ':'U', u'Ự':'U', u'Ư':'U',
  28. u'Ý':'Y', u'Ỳ':'Y', u'Ỷ':'Y', u'Ỹ':'Y', u'Ỵ':'Y'}
  29.  
  30. # Build Vietnamese characters to floats dictionary
  31. VN_UNI_FLT = {}
  32. VN_CHARS_TEMP = {u'á': 97.06, u'à': 97.12, u'ả': 97.18, u'ã': 97.24, u'ạ': 97.30,
  33. u'ă': 97.33, u'ắ': 97.36, u'ằ': 97.42, u'ẳ': 97.48, u'ẵ': 97.54, u'ặ': 97.60,
  34. u'â': 97.63, u'ấ': 97.66, u'ầ': 97.72, u'ẩ': 97.78, u'ẫ': 97.84, u'ậ': 97.90,
  35. u'đ': 100.50,
  36. u'é': 101.09, u'è': 101.18, u'ẻ': 101.27, u'ẽ': 101.36, u'ẹ': 101.45,
  37. u'ê': 101.50, u'ế': 101.54, u'ề': 101.63, u'ể': 101.72, u'ễ': 101.81, u'ệ': 101.90,
  38. u'í': 105.18, u'ì': 105.36, u'ỉ': 105.54, u'ĩ': 105.72, u'ị': 105.90,
  39. u'ó': 111.06, u'ò': 111.12, u'ỏ': 111.18, u'õ': 111.24, u'ọ': 111.30,
  40. u'ơ': 111.33, u'ớ': 111.36, u'ờ': 111.42, u'ở': 111.48, u'ỡ': 111.54, u'ợ': 111.60,
  41. u'ô': 111.63, u'ố': 111.66, u'ồ': 111.72, u'ổ': 111.78, u'ỗ': 111.84, u'ộ': 111.90,
  42. u'ú': 117.09, u'ù': 117.18, u'ủ': 117.27, u'ũ': 117.36, u'ụ': 117.45,
  43. u'ư': 117.50, u'ứ': 117.54, u'ừ': 117.63, u'ử': 117.72, u'ữ': 117.81, u'ự': 117.90,
  44. u'ý': 121.18, u'ỳ': 121.36, u'ỷ': 121.54, u'ỹ': 121.72, u'ỵ': 121.90}
  45. for c in VN_CHARS_TEMP:
  46. VN_UNI_FLT[c], VN_UNI_FLT[c.upper()] = VN_CHARS_TEMP[c], VN_CHARS_TEMP[c] - 32
  47.  
  48.  
  49. # Functions
  50. def OrdVn(c):
  51. 'Updated version of ord()'
  52. return VN_UNI_FLT[c] if c in VN_UNI_FLT else ord(c)
  53.  
  54. def CompareVnChr(a,b):
  55. 'Alphabetical order of Vietnamese characters'
  56. a, b = OrdVn(a), OrdVn(b)
  57. if a > b: return 1
  58. elif a < b: return -1
  59. return 0
  60.  
  61. def CompareVnStr(s1,s2):
  62. 'Alphabetical order of Vietnamese strings'
  63. len1, len2 = len(s1), len(s2)
  64. i_max = len1 if len1 < len2 else len2
  65. for i in range(i_max):
  66. c = CompareVnChr(s1[i],s2[i])
  67. if c: return c
  68. if len1 > i_max: return 1
  69. if len2 > i_max: return -1
  70. return 0
  71.  
  72. def Vn2Ascii(s):
  73. 'Convert Vietnamese string with marks to Vietnamese string with no marks'
  74. return ''.join( [(chr(int(VN_UNI_FLT[c])) if c in VN_UNI_FLT else c)
  75. for c in s] )
  76.  
  77. def Uni2Ascii(s):
  78. 'Convert Vietnamese string with marks to Vietnamese string with no marks'
  79. s = [c for c in s]
  80. for i in xrange(len(s)):
  81. o = int(OrdVn(s[i]))
  82. s[i] = '?' if o > 127 else chr(o)
  83. return ''.join(s)
  84.  
Success #stdin #stdout 0.01s 8024KB
stdin
Standard input is empty
stdout
Standard output is empty