def test_longstrings(self):
# test long strings to check for memory overflow problems
errors = [ "strict", "ignore", "replace", "xmlcharrefreplace",
"backslashreplace"]
# register the handlers under different names,
# to prevent the codec from recognizing the name
for err in errors:
codecs.register_error("test." + err, codecs.lookup_error(err))
l = 1000
errors += [ "test." + err for err in errors ]
for uni in [ s*l for s in ("x", "\u3042", "a\xe4") ]:
for enc in ("ascii", "latin-1", "iso-8859-1", "iso-8859-15",
"utf-8", "utf-7", "utf-16", "utf-32"):
for err in errors:
try:
uni.encode(enc, err)
except UnicodeError:
pass
python类name()的实例源码
def test_hangul_syllables(self):
self.checkletter("HANGUL SYLLABLE GA", "\uac00")
self.checkletter("HANGUL SYLLABLE GGWEOSS", "\uafe8")
self.checkletter("HANGUL SYLLABLE DOLS", "\ub3d0")
self.checkletter("HANGUL SYLLABLE RYAN", "\ub7b8")
self.checkletter("HANGUL SYLLABLE MWIK", "\ubba0")
self.checkletter("HANGUL SYLLABLE BBWAEM", "\ubf88")
self.checkletter("HANGUL SYLLABLE SSEOL", "\uc370")
self.checkletter("HANGUL SYLLABLE YI", "\uc758")
self.checkletter("HANGUL SYLLABLE JJYOSS", "\ucb40")
self.checkletter("HANGUL SYLLABLE KYEOLS", "\ucf28")
self.checkletter("HANGUL SYLLABLE PAN", "\ud310")
self.checkletter("HANGUL SYLLABLE HWEOK", "\ud6f8")
self.checkletter("HANGUL SYLLABLE HIH", "\ud7a3")
self.assertRaises(ValueError, unicodedata.name, "\ud7a4")
def test_aliases(self):
# Check that the aliases defined in the NameAliases.txt file work.
# This should be updated when new aliases are added or the file
# should be downloaded and parsed instead. See #12753.
aliases = [
('LATIN CAPITAL LETTER GHA', 0x01A2),
('LATIN SMALL LETTER GHA', 0x01A3),
('KANNADA LETTER LLLA', 0x0CDE),
('LAO LETTER FO FON', 0x0E9D),
('LAO LETTER FO FAY', 0x0E9F),
('LAO LETTER RO', 0x0EA3),
('LAO LETTER LO', 0x0EA5),
('TIBETAN MARK BKA- SHOG GI MGO RGYAN', 0x0FD0),
('YI SYLLABLE ITERATION MARK', 0xA015),
('PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET', 0xFE18),
('BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS', 0x1D0C5)
]
for alias, codepoint in aliases:
self.checkletter(alias, chr(codepoint))
name = unicodedata.name(chr(codepoint))
self.assertNotEqual(name, alias)
self.assertEqual(unicodedata.lookup(alias),
unicodedata.lookup(name))
with self.assertRaises(KeyError):
unicodedata.ucd_3_2_0.lookup(alias)
def test_strict_error_handling(self):
# bogus character name
self.assertRaises(
UnicodeError,
str, b"\\N{blah}", 'unicode-escape', 'strict'
)
# long bogus character name
self.assertRaises(
UnicodeError,
str, bytes("\\N{%s}" % ("x" * 100000), "ascii"), 'unicode-escape', 'strict'
)
# missing closing brace
self.assertRaises(
UnicodeError,
str, b"\\N{SPACE", 'unicode-escape', 'strict'
)
# missing opening brace
self.assertRaises(
UnicodeError,
str, b"\\NSPACE", 'unicode-escape', 'strict'
)
def charinfo(self, *, characters: str):
"""Shows you information about a number of characters.
Only up to 15 characters at a time.
"""
if len(characters) > 15:
await self.bot.say('Too many characters ({}/15)'.format(len(characters)))
return
def to_string(c):
digit = format(ord(c), 'x')
name = unicodedata.name(c, 'Name not found.')
return '`0x{0}`: {1} - {2} \N{EM DASH} <http://www.fileformat.info/info/unicode/char/{0}>'.format(digit, name, c)
await self.bot.say('\n'.join(map(to_string, characters)))
def merge_ams(amsmath, amshelp, lshort):
for amsk, amsv in chain(amsmath.items(), amshelp.items()):
if amsk not in lshort:
lshort.update({amsk: amsv})
continue
lvdict = lshort[amsk]
for k, v in amsv.items():
# Can't just check ``__contains__`` here bec. some vals are None.
if k not in lvdict or (v in lvdict[k] if is_seq(lvdict[k]) else
v == lvdict[k]):
continue
if k not in ('name', 'meta'):
lvdict.update({k: enlist(v, lvdict[k])})
elif k == 'meta' and v is not None:
if lvdict['meta'] is None:
lvdict['meta'] = {}
for mk, mv in v.items():
if mk not in lvdict['meta']:
lvdict['meta'].update({mk: mv})
else:
# This doesn't run, but add concat logic if that
# ever changes.
pass
else:
assert v is None
def main():
# ????????????Unicode??,????????????
print("A")
print("\u0041")
print("\N{LATIN CAPITAL LETTER A}")
# ????????encode()????????????????
print("\u00A1Help!")
print("\u00A1Help!".encode("utf-8"))
print(b"\xc2\xa1Help!".decode("utf-8"))
# unicodedata??,???????????????.???????????Unicode?????.
# ????unicodedata??,???????????Unicode?????.?????????????????.
# ??????????????,??????????UTF-8
data = b"\xd9\x85\xd8\xb1\xd8\xad\xd8\xa8\xd8\xa7\xd8\xa3\xd9\x84\xd8\xa7\xd9\x86"
print(data.decode("utf-8"))
# ?ud.name()?????????,??????
for ch in data.decode("utf-8"):
print(ord(ch), ud.name(ch))
def global_matches(self, text):
"""Compute matches when text is a simple name.
Return a list of all keywords, built-in functions and names currently
defined in self.namespace or self.global_namespace that match.
"""
matches = []
match_append = matches.append
n = len(text)
for lst in [keyword.kwlist,
builtin_mod.__dict__.keys(),
self.namespace.keys(),
self.global_namespace.keys()]:
for word in lst:
if word[:n] == text and word != "__builtins__":
match_append(word)
return [cast_unicode_py2(m) for m in matches]
def python_matches(self, text):
"""Match attributes or global python names"""
if "." in text:
try:
matches = self.attr_matches(text)
if text.endswith('.') and self.omit__names:
if self.omit__names == 1:
# true if txt is _not_ a __ name, false otherwise:
no__name = (lambda txt:
re.match(r'.*\.__.*?__',txt) is None)
else:
# true if txt is _not_ a _ name, false otherwise:
no__name = (lambda txt:
re.match(r'\._.*?',txt[txt.rindex('.'):]) is None)
matches = filter(no__name, matches)
except NameError:
# catches <undefined attributes>.<tab>
matches = []
else:
matches = self.global_matches(text)
return matches
def MasterInfo():
for i in range (0, 30):
try:
print "Name" + ":" + " " + current_font.masters[i].name
print "id" + ":" + " " + current_font.masters[i].id
print "weight" + ":" + " " + current_font.masters[i].weight
print "width" + ":" + " " + current_font.masters[i].width
print current_font.masters[i].weightValue #object type: Float
print current_font.masters[i].widthValue #object type: Float
print current_font.masters[i].customName
print current_font.masters[i].customValue
print current_font.masters[i].italicAngle
except AttributeError:
number_fonts = str(i)
print ("Total number of masters in font:" + " " + number_fonts)
break
def drawInfo(): #Font Name, Designer and Glyphname on every page
font("System Font Bold")
fontSize(10)
text(current_font.familyName + " " + "by" + " " + str(current_font.designer), (0, 0))
glyph_name = current_glyph.name #new variable because to avoid conflict and confusion
font("System Font Light")
translate(0, - 12)
uni_glyph = current_glyph.string
print current_glyph.string
try:
text(unicodedata.name(uni_glyph), (0, 0))
except:
print 'No Name'
translate(0, - 12)
text(glyph_name, (0, 0))
translate(0, - 12)
text('0x' + current_font.glyphs['A'].unicode, (0, 0))
def test_longstrings(self):
# test long strings to check for memory overflow problems
errors = [ "strict", "ignore", "replace", "xmlcharrefreplace",
"backslashreplace"]
# register the handlers under different names,
# to prevent the codec from recognizing the name
for err in errors:
codecs.register_error("test." + err, codecs.lookup_error(err))
l = 1000
errors += [ "test." + err for err in errors ]
for uni in [ s*l for s in (u"x", u"\u3042", u"a\xe4") ]:
for enc in ("ascii", "latin-1", "iso-8859-1", "iso-8859-15",
"utf-8", "utf-7", "utf-16", "utf-32"):
for err in errors:
try:
uni.encode(enc, err)
except UnicodeError:
pass
def test_hangul_syllables(self):
self.checkletter("HANGUL SYLLABLE GA", u"\uac00")
self.checkletter("HANGUL SYLLABLE GGWEOSS", u"\uafe8")
self.checkletter("HANGUL SYLLABLE DOLS", u"\ub3d0")
self.checkletter("HANGUL SYLLABLE RYAN", u"\ub7b8")
self.checkletter("HANGUL SYLLABLE MWIK", u"\ubba0")
self.checkletter("HANGUL SYLLABLE BBWAEM", u"\ubf88")
self.checkletter("HANGUL SYLLABLE SSEOL", u"\uc370")
self.checkletter("HANGUL SYLLABLE YI", u"\uc758")
self.checkletter("HANGUL SYLLABLE JJYOSS", u"\ucb40")
self.checkletter("HANGUL SYLLABLE KYEOLS", u"\ucf28")
self.checkletter("HANGUL SYLLABLE PAN", u"\ud310")
self.checkletter("HANGUL SYLLABLE HWEOK", u"\ud6f8")
self.checkletter("HANGUL SYLLABLE HIH", u"\ud7a3")
import unicodedata
self.assertRaises(ValueError, unicodedata.name, u"\ud7a4")
def test_strict_eror_handling(self):
# bogus character name
self.assertRaises(
UnicodeError,
unicode, "\\N{blah}", 'unicode-escape', 'strict'
)
# long bogus character name
self.assertRaises(
UnicodeError,
unicode, "\\N{%s}" % ("x" * 100000), 'unicode-escape', 'strict'
)
# missing closing brace
self.assertRaises(
UnicodeError,
unicode, "\\N{SPACE", 'unicode-escape', 'strict'
)
# missing opening brace
self.assertRaises(
UnicodeError,
unicode, "\\NSPACE", 'unicode-escape', 'strict'
)
def test_longstrings(self):
# test long strings to check for memory overflow problems
errors = [ "strict", "ignore", "replace", "xmlcharrefreplace",
"backslashreplace"]
# register the handlers under different names,
# to prevent the codec from recognizing the name
for err in errors:
codecs.register_error("test." + err, codecs.lookup_error(err))
l = 1000
errors += [ "test." + err for err in errors ]
for uni in [ s*l for s in ("x", "\u3042", "a\xe4") ]:
for enc in ("ascii", "latin-1", "iso-8859-1", "iso-8859-15",
"utf-8", "utf-7", "utf-16", "utf-32"):
for err in errors:
try:
uni.encode(enc, err)
except UnicodeError:
pass
def test_hangul_syllables(self):
self.checkletter("HANGUL SYLLABLE GA", "\uac00")
self.checkletter("HANGUL SYLLABLE GGWEOSS", "\uafe8")
self.checkletter("HANGUL SYLLABLE DOLS", "\ub3d0")
self.checkletter("HANGUL SYLLABLE RYAN", "\ub7b8")
self.checkletter("HANGUL SYLLABLE MWIK", "\ubba0")
self.checkletter("HANGUL SYLLABLE BBWAEM", "\ubf88")
self.checkletter("HANGUL SYLLABLE SSEOL", "\uc370")
self.checkletter("HANGUL SYLLABLE YI", "\uc758")
self.checkletter("HANGUL SYLLABLE JJYOSS", "\ucb40")
self.checkletter("HANGUL SYLLABLE KYEOLS", "\ucf28")
self.checkletter("HANGUL SYLLABLE PAN", "\ud310")
self.checkletter("HANGUL SYLLABLE HWEOK", "\ud6f8")
self.checkletter("HANGUL SYLLABLE HIH", "\ud7a3")
self.assertRaises(ValueError, unicodedata.name, "\ud7a4")
def test_aliases(self):
# Check that the aliases defined in the NameAliases.txt file work.
# This should be updated when new aliases are added or the file
# should be downloaded and parsed instead. See #12753.
aliases = [
('LATIN CAPITAL LETTER GHA', 0x01A2),
('LATIN SMALL LETTER GHA', 0x01A3),
('KANNADA LETTER LLLA', 0x0CDE),
('LAO LETTER FO FON', 0x0E9D),
('LAO LETTER FO FAY', 0x0E9F),
('LAO LETTER RO', 0x0EA3),
('LAO LETTER LO', 0x0EA5),
('TIBETAN MARK BKA- SHOG GI MGO RGYAN', 0x0FD0),
('YI SYLLABLE ITERATION MARK', 0xA015),
('PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET', 0xFE18),
('BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS', 0x1D0C5)
]
for alias, codepoint in aliases:
self.checkletter(alias, chr(codepoint))
name = unicodedata.name(chr(codepoint))
self.assertNotEqual(name, alias)
self.assertEqual(unicodedata.lookup(alias),
unicodedata.lookup(name))
with self.assertRaises(KeyError):
unicodedata.ucd_3_2_0.lookup(alias)
def test_strict_error_handling(self):
# bogus character name
self.assertRaises(
UnicodeError,
str, b"\\N{blah}", 'unicode-escape', 'strict'
)
# long bogus character name
self.assertRaises(
UnicodeError,
str, bytes("\\N{%s}" % ("x" * 100000), "ascii"), 'unicode-escape', 'strict'
)
# missing closing brace
self.assertRaises(
UnicodeError,
str, b"\\N{SPACE", 'unicode-escape', 'strict'
)
# missing opening brace
self.assertRaises(
UnicodeError,
str, b"\\NSPACE", 'unicode-escape', 'strict'
)
def command_chars(string, vargs):
"""
Print a list of all IPA characters in the given string.
It will print the Unicode representation, the full IPA name,
and the Unicode "U+"-prefixed hexadecimal codepoint representation
of each IPA character.
:param str string: the string to act upon
:param dict vargs: the command line arguments
"""
try:
ipa_string = IPAString(
unicode_string=string,
ignore=vargs["ignore"],
single_char_parsing=vargs["single_char_parsing"]
)
for c in ipa_string:
print(u"'%s'\t%s (%s)" % (c.unicode_repr, c.name, unicode_to_hex(c.unicode_repr)))
except ValueError as exc:
print_error(str(exc))
def test_longstrings(self):
# test long strings to check for memory overflow problems
errors = [ "strict", "ignore", "replace", "xmlcharrefreplace",
"backslashreplace"]
# register the handlers under different names,
# to prevent the codec from recognizing the name
for err in errors:
codecs.register_error("test." + err, codecs.lookup_error(err))
l = 1000
errors += [ "test." + err for err in errors ]
for uni in [ s*l for s in (u"x", u"\u3042", u"a\xe4") ]:
for enc in ("ascii", "latin-1", "iso-8859-1", "iso-8859-15",
"utf-8", "utf-7", "utf-16", "utf-32"):
for err in errors:
try:
uni.encode(enc, err)
except UnicodeError:
pass