检查文本数字、字母表、字母大写和小写,符号除外

2024-03-28 21:11:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要你们的帮助。 我不明白该用列表还是集合。列表更有效。字典也需要索引。但我的问题是文本应该是字符串,所以变量必须等于文本作为字符串。我不能D=['a','b','c']。 文本给了我错误,因为它不能比较除个别以外的所有示例,我必须创建如abc或word example作为\u success,并在列表中确认其为true。你知道吗

这是我的代码到目前为止,但我有一个问题,就是现在它接受数字,字母和符号。符号如!@#$%应返回False。 把它作为自己的函数工作,但我需要它在if语句中。 返回板蓝根()在if语句中不起作用。这就是我的问题符号应该是假的。你知道吗

def check(text):
    if text== '':
        return False
    if text.isalpha() == text.isdigit(): 
        return True
    else:
        return text.isalnum()





def main():           
    text = str(raw_input("Enter text: "))
    print(check(text))
main()

输出问题。 输入文本:_ 假

_uu被认为是一个真实的符号。示例\u success123为真 !@#$%假设为false,但它与输出一样显示为True另一个示例是!@#A123号。此输出为假。你知道吗

上面的代码接受下划线、字母和数字 输出: _成功123 但问题是也接受!@#$是真的。 返回板蓝根()拒绝符号,但它在if语句中不起作用。你知道吗


Tags: 字符串代码text文本false示例列表return
2条回答

如果要避免使用正则表达式,可以使用Python集:

allowed = set('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789')

def check(text):
    return not len(set(text) - allowed)

for text in ['_success123', '!@#$%']:
    print(text, check(text))

这会将文本转换为一组字符,并删除所有允许的字符。如果任何字符仍然存在,那么您就知道它是无效的。对于两个示例,这给出了:

_success123 True
!@#$% False

这太过分了,但你可以用正则表达式。添加新字符(例如符号)很容易:

import re
def check(text):
    return re.match('^[a-zA-Z0-9_!]*$', text)

text = str(raw_input("Enter text: "))
print(check(text))

相关问题 更多 >