我正在导入字符串,并尝试检查文本是否仅包含“ a-z”,“ A-Z”和“ 0-9”。
但是我只能输入,输入字母和数字时不会成功打印
int c;
答案 0 :(得分:6)
您可以为此使用正则表达式,例如按照以下模式检查字符串:
import re
pattern = re.compile("[A-Za-z0-9]+")
pattern.fullmatch(string)
说明:
[A-Za-z0-9]
匹配A-Z,a-z和0-9范围内的字符,因此匹配字母和数字。
+
表示匹配1个或多个前面的令牌。
re.fullmatch()
方法允许检查整个字符串是否与正则表达式模式匹配。如果找到匹配项,则返回相应的匹配对象;否则,如果字符串与模式不匹配,则返回None
。
一起:
import re
if __name__ == '__main__':
string = "YourString123"
pattern = re.compile("[A-Za-z0-9]+")
# if found match (entire string matches pattern)
if pattern.fullmatch(string) is not None:
print("Found match: " + string)
else:
# if not found match
print("No match")
答案 1 :(得分:3)
只需使用str.isalnum()
>>> '123AbC'.isalnum()
True
>>> '1&A'.isalnum()
False
参考文档:
如果字符串中的所有字符都是字母数字,则返回true 至少为一个字符,否则为false。字符
c
是字母数字 如果以下之一返回True
:c.isalpha()
,c.isdecimal()
,c.isdigit()
或c.isnumeric()
。
如果您不想检查str.isdigit()
或str.isnumeric()
,而这些检查可能允许数字的小数点,只需使用str.isnumeric()
和str.isalpha()
:
>>> all(c.isnumeric() or c.isalpha() for c in '123AbC')
True
>>> all(c.isnumeric() or c.isalpha() for c in '1&A')
False
答案 2 :(得分:1)
您必须分别比较传入文本的每个字母。
import string
text = input("Enter: ")
correct = string.ascii_letters + string.digits
status = True
for char in text:
if char not in correct:
status = False
if status:
print('Correct')
else:
print('InCorrect')
答案 3 :(得分:0)
您正在测试整个字符串是否在字符串'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
所以说输入为'testInput'
您正在检查'testInput'
是否在字符串'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
中,而不是。
您需要单独检查每个字符
您可以使用易于使用的功能
import string
def validCharacters(text):
correct = string.ascii_letters + string.digits
for character in text:
if character not in correct:
return False
return True
text = input("Enter: ")
if validCharacters(text):
print("Correct")
else:
print("Incorrect")
答案 4 :(得分:0)
我们可以删除所有不是A-Z,a-z或0-9的字符,然后检查剩余字符串的长度。如果大于0,则表示不是上述字符:
import re
text = input("Enter: ")
result = re.sub("[A-Za-z0-9]", '', text)
if len(result) == 0:
print("Success")
else:
print("Failure")
结果:
abcDEF123 -> Success
hello! -> Failure
答案 5 :(得分:0)
您可以通过多种方式来实现它,我将通过以下方式利用space_after
:
set
我只是检查由给定文本的字符组成的import string
correct = {char for char in string.ascii_letters + string.digits}
def is_correct(text):
return {char for char in text}.issubset(correct)
print(is_correct('letters123')) # True
print(is_correct('???')) # False
print(is_correct('\n')) # False
是否是所有合法字符的set
的子集。请记住,这始终会处理整个文本,从性能的角度来看,这并不是最好的方法(因为您可能会在找到第一个非法字符后结束检查),但是除非您需要处理很长的文本或文本,否则应该没有问题。时间很少。
答案 6 :(得分:-1)
您可以使用正则表达式匹配来检查字符串是否仅包含字母和字母
import re
text = input("enter:")
regex = r"([0-9a-zA-Z]+)"
match = re.match(regex, string)
if match != None:
print("success")