如果它不包含除下划线以外的特殊字符,我只能在我的程序中使用字符串_
。我怎样才能检查这个?
我尝试使用 unicodedata 库。但是特殊字符刚刚被标准字符取代。
您可以像这样使用string.punctuation
和运行any
import string
invalidChars = set(string.punctuation.replace("_", ""))
if any(char in invalidChars for char in word):
print "Invalid"
else:
print "Valid"
有了这条线
invalidChars = set(string.punctuation.replace("_", ""))
我们正在准备一个不允许使用的标点符号列表。如您所愿_
,我们正在_
从列表中删除并准备新设置为invalidChars
. 因为在集合中查找速度更快。
any
True
如果至少有一个字符在. 中,函数将返回invalidChars
。
编辑:如评论中所问,这是正则表达式解决方案。正则表达式取自https://stackoverflow.com/a/336220/1903116
word = "Welcome"
import re
print "Valid" if re.match("^[a-zA-Z0-9_]*$", word) else "Invalid"
您将需要定义“特殊字符”,但对于某些字符串s
,您的意思可能是:
import re
if re.match(r'^\w+$', s):
# s is good-to-go
其他人的方法不考虑空格。显然,没有人真正将空格视为特殊字符。
使用此方法检测不包括空格的特殊字符:
import re
def detect_special_characer(pass_string):
regex= re.compile('[@_!#$%^&*()<>?/\|}{~:]')
if(regex.search(pass_string) == None):
res = False
else:
res = True
return(res)
像Cybernetic中的方法一样,要丢失那些多余的字符,请修改函数的第二行
regex= re.compile('[@_!#$%^&*()<>?/\|}{~:]')
至
regex= re.compile('[@_!#$%^&*()<>?/\\|}{~:\[\]]')
\
和]
字符被转义的地方\
完整的:
import re
def detect_special_characer(pass_string):
regex= re.compile('[@_!#$%^&*()<>?/\\\|}{~:[\]]')
if(regex.search(pass_string) == None):
res = False
else:
res = True
return(res)
如果一个字符不是数字、空格或 AZ,那么它是特殊的
for character in my_string
if not (character.isnumeric() and character.isspace() and character.isalpha() and character != "_")
print(" \(character)is special"