Advertisement
Guest User

NFKC issues

a guest
Dec 19th, 2012
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.22 KB | None | 0 0
  1. # all unicode characters that after NFKC normalization
  2. # return a string with a space at the beginning
  3.  
  4. from itertools import count
  5. from unicodedata import decomposition as dec, name, normalize
  6.  
  7. chars = (unichr(i) for i in range(0xffff+1) if dec(unichr(i)))
  8. counter = count()
  9. for ch in chars:
  10.     norm = normalize('NFKC', ch)
  11.     if len(norm) > 1 and norm.startswith(u' '):
  12.         print u'# %2i | % 9r | % 3s |'  % (counter.next(), ch, ch),
  13.         print u'% 20s | %s | %s | %r' % (dec(ch), name(ch), norm, norm)
  14.  
  15. #  0 |   u'\xa8' |   ¨ |   <compat> 0020 0308 | DIAERESIS |  ̈ | u' \u0308'
  16. #  1 |   u'\xaf' |   ¯ |   <compat> 0020 0304 | MACRON |  ̄ | u' \u0304'
  17. #  2 |   u'\xb4' |   ´ |   <compat> 0020 0301 | ACUTE ACCENT |  ́ | u' \u0301'
  18. #  3 |   u'\xb8' |   ¸ |   <compat> 0020 0327 | CEDILLA |  ̧ | u' \u0327'
  19. #  4 | u'\u02d8' |   ˘ |   <compat> 0020 0306 | BREVE |  ̆ | u' \u0306'
  20. #  5 | u'\u02d9' |   ˙ |   <compat> 0020 0307 | DOT ABOVE |  ̇ | u' \u0307'
  21. #  6 | u'\u02da' |   ˚ |   <compat> 0020 030A | RING ABOVE |  ̊ | u' \u030a'
  22. #  7 | u'\u02db' |   ˛ |   <compat> 0020 0328 | OGONEK |  ̨ | u' \u0328'
  23. #  8 | u'\u02dc' |   ˜ |   <compat> 0020 0303 | SMALL TILDE |  ̃ | u' \u0303'
  24. #  9 | u'\u02dd' |   ˝ |   <compat> 0020 030B | DOUBLE ACUTE ACCENT |  ̋ | u' \u030b'
  25. # 10 | u'\u037a' |   ͺ |   <compat> 0020 0345 | GREEK YPOGEGRAMMENI |  ͅ | u' \u0345'
  26. # 11 | u'\u0384' |   ΄ |   <compat> 0020 0301 | GREEK TONOS |  ́ | u' \u0301'
  27. # 12 | u'\u0385' |   ΅ |            00A8 0301 | GREEK DIALYTIKA TONOS |  ̈́ | u' \u0308\u0301'
  28. # 13 | u'\u1fbd' |   ᾽ |   <compat> 0020 0313 | GREEK KORONIS |  ̓ | u' \u0313'
  29. # 14 | u'\u1fbf' |   ᾿ |   <compat> 0020 0313 | GREEK PSILI |  ̓ | u' \u0313'
  30. # 15 | u'\u1fc0' |   ῀ |   <compat> 0020 0342 | GREEK PERISPOMENI |  ͂ | u' \u0342'
  31. # 16 | u'\u1fc1' |   ῁ |            00A8 0342 | GREEK DIALYTIKA AND PERISPOMENI |  ̈͂ | u' \u0308\u0342'
  32. # 17 | u'\u1fcd' |   ῍ |            1FBF 0300 | GREEK PSILI AND VARIA |  ̓̀ | u' \u0313\u0300'
  33. # 18 | u'\u1fce' |   ῎ |            1FBF 0301 | GREEK PSILI AND OXIA |  ̓́ | u' \u0313\u0301'
  34. # 19 | u'\u1fcf' |   ῏ |            1FBF 0342 | GREEK PSILI AND PERISPOMENI |  ̓͂ | u' \u0313\u0342'
  35. # 20 | u'\u1fdd' |   ῝ |            1FFE 0300 | GREEK DASIA AND VARIA |  ̔̀ | u' \u0314\u0300'
  36. # 21 | u'\u1fde' |   ῞ |            1FFE 0301 | GREEK DASIA AND OXIA |  ̔́ | u' \u0314\u0301'
  37. # 22 | u'\u1fdf' |   ῟ |            1FFE 0342 | GREEK DASIA AND PERISPOMENI |  ̔͂ | u' \u0314\u0342'
  38. # 23 | u'\u1fed' |   ῭ |            00A8 0300 | GREEK DIALYTIKA AND VARIA |  ̈̀ | u' \u0308\u0300'
  39. # 24 | u'\u1fee' |   ΅ |                 0385 | GREEK DIALYTIKA AND OXIA |  ̈́ | u' \u0308\u0301'
  40. # 25 | u'\u1ffd' |   ´ |                 00B4 | GREEK OXIA |  ́ | u' \u0301'
  41. # 26 | u'\u1ffe' |   ῾ |   <compat> 0020 0314 | GREEK DASIA |  ̔ | u' \u0314'
  42. # 27 | u'\u2017' |   ‗ |   <compat> 0020 0333 | DOUBLE LOW LINE |  ̳ | u' \u0333'
  43. # 28 | u'\u203e' |   ‾ |   <compat> 0020 0305 | OVERLINE |  ̅ | u' \u0305'
  44. # 29 | u'\u309b' |   ゛ |   <compat> 0020 3099 | KATAKANA-HIRAGANA VOICED SOUND MARK |  ゙ | u' \u3099'
  45. # 30 | u'\u309c' |   ゜ |   <compat> 0020 309A | KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK |  ゚ | u' \u309a'
  46. # 31 | u'\ufc5e' |   ﱞ | <isolated> 0020 064C 0651 | ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM |  ٌّ | u' \u064c\u0651'
  47. # 32 | u'\ufc5f' |   ﱟ | <isolated> 0020 064D 0651 | ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM |  ٍّ | u' \u064d\u0651'
  48. # 33 | u'\ufc60' |   ﱠ | <isolated> 0020 064E 0651 | ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM |  َّ | u' \u064e\u0651'
  49. # 34 | u'\ufc61' |   ﱡ | <isolated> 0020 064F 0651 | ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM |  ُّ | u' \u064f\u0651'
  50. # 35 | u'\ufc62' |   ﱢ | <isolated> 0020 0650 0651 | ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM |  ِّ | u' \u0650\u0651'
  51. # 36 | u'\ufc63' |   ﱣ | <isolated> 0020 0651 0670 | ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM |  ّٰ | u' \u0651\u0670'
  52. # 37 | u'\ufe49' |   ﹉ |        <compat> 203E | DASHED OVERLINE |  ̅ | u' \u0305'
  53. # 38 | u'\ufe4a' |   ﹊ |        <compat> 203E | CENTRELINE OVERLINE |  ̅ | u' \u0305'
  54. # 39 | u'\ufe4b' |   ﹋ |        <compat> 203E | WAVY OVERLINE |  ̅ | u' \u0305'
  55. # 40 | u'\ufe4c' |   ﹌ |        <compat> 203E | DOUBLE WAVY OVERLINE |  ̅ | u' \u0305'
  56. # 41 | u'\ufe70' |   ﹰ | <isolated> 0020 064B | ARABIC FATHATAN ISOLATED FORM |  ً | u' \u064b'
  57. # 42 | u'\ufe72' |   ﹲ | <isolated> 0020 064C | ARABIC DAMMATAN ISOLATED FORM |  ٌ | u' \u064c'
  58. # 43 | u'\ufe74' |   ﹴ | <isolated> 0020 064D | ARABIC KASRATAN ISOLATED FORM |  ٍ | u' \u064d'
  59. # 44 | u'\ufe76' |   ﹶ | <isolated> 0020 064E | ARABIC FATHA ISOLATED FORM |  َ | u' \u064e'
  60. # 45 | u'\ufe78' |   ﹸ | <isolated> 0020 064F | ARABIC DAMMA ISOLATED FORM |  ُ | u' \u064f'
  61. # 46 | u'\ufe7a' |   ﹺ | <isolated> 0020 0650 | ARABIC KASRA ISOLATED FORM |  ِ | u' \u0650'
  62. # 47 | u'\ufe7c' |   ﹼ | <isolated> 0020 0651 | ARABIC SHADDA ISOLATED FORM |  ّ | u' \u0651'
  63. # 48 | u'\ufe7e' |   ﹾ | <isolated> 0020 0652 | ARABIC SUKUN ISOLATED FORM |  ْ | u' \u0652'
  64. # 49 | u'\uffe3' |    ̄ |          <wide> 00AF | FULLWIDTH MACRON |  ̄ | u' \u0304'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement