Python判斷字串是否為合法標示符
這學期在學習編譯原理,最近的上機作業就是做一個簡單的詞法分析器,在做的過程中,突然有個需求就是判斷一個字串是否為合法的標示符,因為我是用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判斷字串是否為合法標示符
這學期在學習編譯原理,最近的上機作業就是做一個簡單的詞法分析器,在做的過程中,突然有個需求就是判斷一個字串是否為合法的標示符,因為我是用python語言做的,做的是Python的詞法分析器,於是下面分享以下怎樣判斷一個字串是合法的標示符。 首先,我們來熟悉以下
[iOS]判斷字串是否為合法郵箱地址
- (IBAction)saveEmailAction:(id)sender { if ([self isValidateEmail:_mailField.text]) { [self.delegate saveEmail:_mailField.text];
[轉]Python判斷字串是否為字母或者數字
str_1 = "123" str_2 = "Abc" str_3 = "123Abc" #用isdigit函式判斷是否數字 print(str_1.isdigit()) Ture print(str_2.isdigit()) False print(str_3.isdigit()) False #
Python判斷字串是否為數字
str為字串 1、str.isalnum() 所有字元都是數字或者字母 2、str.isalpha() 所有字元都是字母 3、str.isdigit() 所有字元都是數字 4、str.islower() 所有字元都是小寫 5、str.isupper() 所有字元都是大寫 6、str.isti
判斷字串是否為合法ip
週三去B商搜面試,連著面了三面,對體力也是一個不小的考驗,三面也是技術面,其中程式碼題為判斷字串是否為合法IP 之前IP的題寫過32位int轉換為IP的,還好數字串判斷是否能成為IP的DFS,字串判斷IP的還沒遇見過 經過思考之後,先確定方向,是一道字串處理的題,合法ip的
Python判斷字串是否為字母或者數字(浮點數)
str為字串s為字串 str.isalnum() 所有字元都是數字或者字母 str.isalpha() 所有字元都是字母 str.isdigit() 所有字元都是數字 str.isspace() 所有字元都是空白字元、\t、\n、\r 檢查字串是數字/浮點數方法
依次判斷一系列給定的字串是否為合法的 Python 識別符號
# -*- coding: utf-8 -*- """ Created on Wed Aug 1 11:08:45 2018 @author: 金曉 """ #判斷是否為合法的Python識別符號 #識別符號:首字元必須是字母或下劃線,後面的字元只能是字母、數字、下劃線
判斷字串是否為迴文 python實現
題目:判斷一個字串是否是迴文 方法:設定兩個指標,分別有頭尾向中間移動 或者由中間向兩邊移動 #!/usr/bin/env python # -*- coding: utf-8 -*- def isPalindrome(s): '''判斷一個字串是否為迴文''' l
[JSP][JSTL]頁面中呼叫函式--之${fn:}內建函式、判斷字串是否為空、替換回車符
fn:contains(string, substring) 如果引數string中包含引數substring,返回truefn:containsIgnoreCase(string, substring) 如果引數string中包含引數substring(忽略大小寫),返回truefn:endsWith(st
Python - 判斷list是否為空
str 判斷 存在 emp col lis list pos python Python中判斷list是否為空有以下兩種方式: 方式一: 1 list_temp = [] 2 if len(list_temp): 3 # 存在值即為真 4 else: 5
python 判斷一個數為?
class OS color bsp body dig ins pos 字符 1. 判斷一個變量是否數字(整數、浮點數)? 1 instance(‘a‘, (int, long, float)) 2 3 True 4 5 6 isinstance(‘a‘, (int
js 判斷字串是否為數字(正整數)
/** * 判斷字串是否為數字 * @param nubmer * @returns {boolean} */ function checkRate(nubmer) { //判斷正整數/[1−9]+[0−9]∗]∗/ var re = /^[0-9]+.?[0-9]*/;
java 判斷字串是否為亂碼
以下是一個事例: import java.util.regex.Matcher; import java.util.regex.Pattern; public class MessyCodeCheck { public static boolean isChinese(char c) {
java判斷字串是否為數字或小數
public static boolean isNumeric(String str){ Pattern pattern = Pattern.compile("[0-9]*"); if(str.indexOf(".")>0){//判斷是否有小數點 if(str.
java判斷字串是否為亂碼
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
正則表示式判斷字串是否為數字
IF cl_abap_matcher=>matches( pattern = '^(-?[1-9]\d*(\.\d*[1-9])?)|(-?0\.\d*[1-9])$' text = '1.01' ) = abap_true. WRITE '數字'. ELSE.
java判斷字串是否為正負整數或浮點數
package org.fiend.basetest; import org.apache.commons.lang3.StringUtils; import java.util.regex.Pattern; /** * 判斷字串是否為正負整數或浮點數 * @author Adminis
java 判斷字串是否為數字(包含負數)
public static void main(String[] args){ System.out.println(AssistController.isNumeric("-77"));}public static boolean isNumeric(String str){ Pattern pa
正則判斷字串是否為數值(正數、負數、小數)
在用MapReduce進行處理業務時,發現HDFS中的資料有的列為漢字、有的列為字串、有的列為正數、有的為負數、有的為小數,根據業務要求只有數字參與運算,因此首先清洗資料,用正則提取所有數值: public boolean isNumber(String str){ &
判斷字串是否 為空 或 為null
注意:為空("")和為null是不一樣的! ============================= ""表示它指向一個長度為0的字串,這時候呼叫它的方法是安全的。 null表示這個字串不指向任何的東西,如果這時候你呼叫它的方法,那麼就會出現空指標異常。 ================