1. 程式人生 > >Python判斷字串是否為合法標示符

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表示這個字串不指向任何的東西,如果這時候你呼叫它的方法,那麼就會出現空指標異常。 ================