这学期在学习编译原理,最近的上机作业就是做一个简单的词法分析器,在做的过程中,突然有个需求就是判断一个字符串是否为合法的标示符,因为我是用python语言做的,做的是Python的词法分析器,于是下面分享以下怎样判断一个字符串是合法的标示符。

首先,我们来熟悉以下python标示符的定义是什么?

定义:以字母或下划线开始的,由字母,数字或下划线组成,但是不能是python的保留字。

又有疑问了,python有哪些保留字,分别是什么?

# python2.x

import keyword

print keyword.kwlis

# python3.x

import keyword

print(keyword.kwlist)

# python2.x输出:

['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

# 共31个

# python3.x输出:

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

# 共33个

好了,下面开始判断

# python2.7

#!/usr/bin/env python

# -*- coding: UTF-8 -*-

import keyword

import string

def is_signal(s):

kw = keyword.kwlist

if s in kw:

return 0

elif s[0] == '_' or s[0] in string.letters: # 判断是否为字母或下划线开头

for i in s:

if i == '_' or i in string.letters or i in string.digits: # 判断是否由字母数字或下划线组成

pass

else:

return 0

return 1

else:

return 0

def main():

s = raw_input()

if is_signal(s) == 1:

print "True"

else:

print "False"

if __name__ == '__main__':

main()

# python3.4

#!/usr/bin/env python

# -*- coding: UTF-8 -*-

import keyword

import string

def is_signal(s):

kw = keyword.kwlist

if s in kw:

return 0

elif s[0] == '_' or s[0] in string.ascii_letters: # 判断是否为字母或下划线开头

for i in s:

if i == '_' or i in string.ascii_letters or i in string.digits: # 判断是否由字母数字或下划线组成

pass

else:

return 0

return 1

else:

return 0

def main():

s = input()

if is_signal(s) == 1:

print("True")

else:

print("False")

if __name__ == '__main__':

main()

通过键盘输入判断,是标示符,则返回True,否则返回False

补充知识:python:标识符必须以字母或下划线开头,后面跟字母,下划线或者数字

标识符合法性检查,首先要以字母或者下划线开始,后面要跟字母,下划线或者或数字.这个小例子只检查长度大于等于 2 的标识符

idcheck.py

#!/usr/bin/env python

'''

idcheck.py -- checks identifiers for validity

'''

import string # string utility module

# create alphabet and number sets

alphas = string.ascii_letters + '_'

nums = string.digits

# salutation message and input prompt

print ('Welcome to the Identifier Checker v1.0')

print ('Testees must be at least 2 chars long.')

inp = input('Identifier to test ?')

if len(inp) >= 1:

if inp[0] not in alphas:

print ('invalid: first symbol must be alphabetic')

else:

for otherChar in inp[1:]:

if otherChar not in alphas + nums:

print ('invalid: remaining symbols must be alphanumeric')

break

else:

print ("okay as an identifier")

else:

print ('invalid: length must be >= 1')

运行结果 1:

Welcome to the Identifier Checker v1.0

Testees must be at least 2 chars long.

Identifier to test -> 123_das

invalid: first symbol must be alphabetic

运行结果 2:

Welcome to the Identifier Checker v1.0

Testees must be at least 2 chars long.

Identifier to test -> _123sdad

okay as an identifier

以上这篇Python判断字符串是否为合法标示符操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: Python判断字符串是否为合法标示符操作

本文地址: http://www.cppcns.com/jiaoben/python/341450.html

python合法的字符串_Python判断字符串是否为合法标示符操作相关推荐

  1. 判断字符串_python判断字符串以什么开始

    简介 Python在处理文本的时候经常需要判断以什么字符串开头,可以取字符串索引进行判断,也可以直接使用startswith函数进行判断. 取索引字符串判断 str="人生苦短,我用Pyth ...

  2. 1.7 编程基础之字符串 33 判断字符串是否为回文 python

    http:// http://noi.openjudge.cn/ch0107/33/ """1.7 编程基础之字符串 33 判断字符串是否为回文http://noi.op ...

  3. python语言字符串_python中字符串的常见操作方法

    原博文 2019-09-06 09:49 − 1. 字符串概念,字符串是一个容器,包含若干个字符并按照一定的顺序组织成一个整体.字符串支持索引操作. 2. 创建字符串基本语法 变量名 = " ...

  4. python判断字符串是纯数字_python判断字符串是否纯数字的方法

    本文实例讲述了python判断字符串是否纯数字的方法.分享给大家供大家参考.具体如下: 判断的代码如下,通过异常判断不能区分前面带正负号的区别,正则表达式可以根据自己需要比较灵活的写,通过isdigi ...

  5. python判断字母数字_Python判断字符串是否为字母或者数字(浮点数)的多种方法

    str为字符串s为字符串 str.isalnum() 所有字符都是数字或者字母 str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 str.isspace() ...

  6. python 决策树 字符型_Python判断字符串是否xx开始或结尾的示例

    判断是否xx开始 使用startswith 示例代码: String = "12345 上山打老虎" if str(String).startswith('1'): #判断Stri ...

  7. python判断字符_Python判断字符串是否为字母或者数字(浮点数)

    str为字符串s为字符串 str.isalnum() 所有字符都是数字或者字母 str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 str.isspace() ...

  8. python判断变量是否为数字_Python 判断字符串是否为数字

    Python 判断字符串是否为数字 以下实例通过创建自定义函数 is_number() 方法来判断字符串是否为数字: # -*- coding: UTF-8 -*- # Filename : test ...

  9. python判断英文字母_python判断字符串是否包含字母

    第一种方法:使用正则表达式判断字符串是否包含字母#-*- coding:utf-8 -*-import re def check(str): my_re = re.compile(r'[A-Za-z] ...

最新文章

  1. C#预处理符号—C#基础回顾
  2. s3c6410 uboot代码分析《一》
  3. python语句关键词用法_python中关键字as的使用方法简介
  4. c++反汇编与逆向分析技术揭秘_C++反汇编与逆向分析技术揭秘
  5. 事务和分布式事务解释
  6. Web开发框架–第1部分:选项和标准
  7. 学习笔记 :E1696 C1107 错误提示
  8. acdsee免费版跳过注册账户_个人博客第1篇——注册GitHub
  9. html 条纹背景,CSS3 一组条纹背景图案
  10. hibernate之HQL实体更新与删除
  11. 常用技术指标实战技巧
  12. 放榜!腾讯iOA、腾讯天幕入选国内数字化可信服务首批认证产品
  13. Python 中 __dict__的用法
  14. 什么是应用服务器,有什么用?
  15. Linux中复制命令cp的使用心得~
  16. loadrunner出错汇总
  17. 计算机爱情诗,简短最美的现代爱情诗大全
  18. 读取解压h5文件为图片
  19. 思科网计算机网络第一章测验,思科计算机网络课程设计——第一章路由概念测试答案...
  20. 通关4级之翻译(2021.02.26)

热门文章

  1. Ubuntu18 安装yum
  2. Cisco访问控制列表
  3. mysql集群(一)
  4. PHP中COOKIE即时生效,php实现cookie即时生效
  5. 23种设计模式(1):单例模式
  6. Windows 7,无法访问internet,DNS无响应
  7. 放下十样东西,你会更优秀!
  8. k8s glusterfs mysql_k8s使用glusterfs实现动态持久化存储
  9. 宿主机docker容器互传文件命令
  10. php表格列宽拖拽,JavaScript_JQuery拖动表头边框线调整表格列宽效果代码,类似于桌面程序中的表格拖动 - phpStudy...