27

如果它不包含除下划线以外的特殊字符,我只能在我的程序中使用字符串_。我怎样才能检查这个?

我尝试使用 unicodedata 库。但是特殊字符刚刚被标准字符取代。

4

5 回答 5

51

您可以像这样使用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. 因为在集合中查找速度更快。

anyTrue如果至少有一个字符在. 中,函数将返回invalidChars

编辑:如评论中所问,这是正则表达式解决方案。正则表达式取自https://stackoverflow.com/a/336220/1903116

word = "Welcome"
import re
print "Valid" if re.match("^[a-zA-Z0-9_]*$", word) else "Invalid"
于 2013-11-14T05:55:37.120 回答
6

您将需要定义“特殊字符”,但对于某些字符串s,您的意思可能是:

import re
if re.match(r'^\w+$', s):
    # s is good-to-go
于 2013-11-14T06:25:23.140 回答
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)
于 2020-07-16T18:50:43.940 回答
0

Cyber​​netic中的方法一样,要丢失那些多余的字符,请修改函数的第二行

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)
于 2021-04-01T02:50:25.360 回答
0

如果一个字符不是数字、空格或 AZ,那么它是特殊的


for character in my_string
   if not (character.isnumeric() and character.isspace() and character.isalpha() and character != "_")
       print(" \(character)is special"


于 2021-06-19T17:04:01.203 回答