在Python中检查字符串是否只包含特殊字符

5

我想要做的是检查字符串是否只包含特殊字符。

下面这个例子可以更好地说明这一点:

Hello -> Valid
Hello?? -> Valid
?? -> Not Valid

同样的事情适用于所有特殊字符,包括"."


下划线是一个特殊字符吗? - Avinash Raj
4个回答

9
您可以使用锚点和正则表达式来检查输入是否仅包含非单词(特殊)字符:
^\W+$

如果下划线也需要被视为特殊字符,则使用以下代码:
^[\W_]+$

正则表达式演示

代码:

>>> def spec(s):
        if not re.match(r'^[_\W]+$', s):
            print('Valid')
        else:
            print('Invalid')


>>> spec('Hello')
Valid
>>> spec('Hello??')
Valid
>>> spec('??')
Invalid

1
@Kasra:你没有完整复制我的答案中的正则表达式。看看这个演示 - anubhava
1
@Kasra 是的,它不会匹配,这就是为什么我加了 if not。你可以根据条件切换打印语句。 - Avinash Raj
1
@Kasra 当你没有思考就给一个负评,然后要求原帖编辑的那一刻真是令人难过啊!:( - Bhargav Rao
1
@BhargavRao 我想我在编辑的同时给出了反对票!无论如何,我很好心地接受我的错误! - Mazdak
1
很高兴看到你也回答了Python正则表达式(之前只看到你回答Java)。现在Python又有了另一个正则表达式专家 :) - Bhargav Rao
显示剩余11条评论

5
您可以使用自定义的Python函数:
>>> import string 
>>> def check(s):
...   return all(i in string.punctuation for i in s)

string.punctuation 包含所有的特殊字符,您可以使用 all 函数来检查这些字符是否全部是特殊字符!


添加一个链接到模块会更好 - Bhargav Rao
对于空字符串,它将返回True,因此请小心。 - pashok3ddd

0

这是可用的代码:

import string

def checkString(your_string):
    for let in your_string.lower():
        if let in string.ascii_lowercase:
            return True
    return False

0
import string

s = input("Enter a string:")

if all(i in string.punctuation for i in s):
    print ("Only special characters")

else:
    print ("Valid")

使用上述循环设置布尔事件,并相应地使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接