Python字符串isidentifier()

时间:2020-02-23 14:43:27  来源:igfitidea点击:

如果字符串是根据Python语言定义的有效标识符,则Python String isidentifier()函数将返回True。

Python字符串isidentifier()

有效的标识符字符串可以是任何长度。
在Python 3.0之前,有效的标识符可以包含大写和小写字母A到Z,下划线_,以及第一个字符之外的数字0到9。

但是,Python 3.0引入了ASCII范围之外的其他字符,可用于创建标识符。
针对PEP-3131进行了此更改。

我们来看一些Python String isidentifier()函数的示例。

s = 'xyzABC'
print(f'{s} is a valid identifier = {s.isidentifier()}')

输出:xyzABC是有效的标识符= True。

s = '0xyz'
print(f'{s} is a valid identifier = {s.isidentifier()}')

输出:`0xyz是有效的标识符= False',因为标识符不能以数字0-9开头。

s = ''
print(f'{s} is a valid identifier = {s.isidentifier()}')

输出:是一个有效的标识符= False,因为标识符不能为空字符串。

s = '_xyz'
print(f'{s} is a valid identifier = {s.isidentifier()}')

输出:`_xyz是一个有效的标识符= True',因为在标识符字符串中允许下划线成为第一个字符。

s = 'ꝗꞨꫳ'
print(f'{s} is a valid identifier = {s.isidentifier()}')

输出:ꝗꞨꫳ是有效的标识符= True

由于PEP-3131会将这些其他非ASCII字符添加到有效标识符字符列表中,因此它是有效的标识符。
但是,如果您使用的是Python 2.x,它将返回False。

打印所有有效的标识符字符列表

我们可以使用unicodedata来检查字符是否是有效标识符列表的一部分。
这是打印所有可用于创建标识符的有效字符的程序。

import unicodedata

count = 0
for codepoint in range(2 ** 16):
  ch = chr(codepoint)
  if ch.isidentifier():
      print(u'{:04x}: {} ({})'.format(codepoint, ch, unicodedata.name(ch, 'UNNAMED')))
      count = count + 1
print(f'Total Number of Identifier Unicode Characters = {count}')

输出:

...
ffd7: ᅲ (HALFWIDTH HANGUL LETTER YU)
ffda: ᅳ (HALFWIDTH HANGUL LETTER EU)
ffdb: ᅴ (HALFWIDTH HANGUL LETTER YI)
ffdc: ᅵ (HALFWIDTH HANGUL LETTER I)
Total Number of Identifier Unicode Characters = 48880