如果除了下划线_
之外不包含任何特殊字符,我只能在程序中使用字符串。我怎么检查这个?
我尝试使用unicodedata库。但是特殊字符被标准字符所取代。
答案 0 :(得分:41)
您可以像这样使用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"
答案 1 :(得分:4)
您需要定义“特殊字符”,但对于某些字符串s
,您的意思可能是:
import re
if re.match(r'^\w+$', s):
# s is good-to-go
答案 2 :(得分:0)
其他人的方法不能解释空格。显然,没有人真的认为空格是特殊字符。
使用此方法来检测不包含空格的特殊字符 :
import re
def detect_special_characer(pass_string):
regex= re.compile('[@_!#$%^&*()<>?/\|}{~:]')
if(regex.search(pass_string) == None):
res = False
else:
res = True
return(res)
答案 3 :(得分:0)
像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)
答案 4 :(得分:0)
如果字符不是数字、空格或 A-Z,则它是特殊字符
for character in my_string
if not (character.isnumeric() and character.isspace() and character.isalpha() and character != "_")
print(" \(character)is special"