#!/usr/bin/env python3 # Copyright (c) 2008-11 Qtrac Ltd. All rights reserved. # This program or module is free software: you can redistribute it and/or # modify it under the terms of the GNU General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. It is provided for educational # purposes and is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. import sys import unicodedata def print_unicode_table(word): filename = "unicode-table.txt" with open(filename, "w", encoding="utf8") as file: file.write("decimal hex chr {0:^40}\n".format("name")) file.write("------- ----- --- {0:-<40}\n".format("")) code = ord(" ") end = min(0xD800, sys.maxunicode) # Stop at surrogate pairs while code < end: c = chr(code) name = unicodedata.name(c, "*** unknown ***") if word is None or word in name.lower(): file.write("{0:7} {0:5X} {0:^3c} {1}\n".format( code, name.title())) code += 1 print("wrote results to", filename) word = None if len(sys.argv) > 1: if sys.argv[1] in ("-h", "--help"): print("usage: {0} [string]".format(sys.argv[0])) word = 0 else: word = sys.argv[1].lower() if word != 0: print_unicode_table(word)