识别 Python 中仅包含数字和“/”符号的字符串

Recognize a string containing only digits and "/" symbols in Python

我有一个短字符串,需要一种方法来识别该字符串中是否只有数字 and/or“/”符号。如果字符串中有字母或其他一些符号 - 这是不行的。只允许使用数字和“/”。

例如:

a = '123456' - 绿灯

b = '123//6' - 绿灯

c = '1m3456' - 不行

d = '1/80o0' - 不行

只需使用set 算术

def onlyallowed(text,allowed="/0123456789"):
    return set(text).issubset(allowed)
print(onlyallowed("123456")) # True
print(onlyallowed("123//6")) # True
print(onlyallowed("1m3456")) # False
print(onlyallowed("1/80o0")) # False

解释:将文本转换为(字符的)集合并检查是否所有这些 character 都在允许范围内。可选 allowed 可用于部署另一组允许的字符,例如仅允许 0s 和 1s:

print(onlyallowed("01011",allowed="01"))  # True

如果您希望处理非常长的文本,并且在开头附近有不允许的字符,您可以选择使用 all 结合理解,如下所示

def onlyallowed(text,allowed="/0123456789"):
    return all(i in allowed for i in text)

all 行为是在遇到非真值后立即 return False(在这种情况下 False,因为我做成员测试)

我相信这就是您要找的:

strings = ['123456', '123//6', '1m3456', '1/80o0']

print([string.replace('/', '').isdigit() for string in strings])

简单地删除任何 / 字符(如果存在)并检查它是否全是数字 对我来说似乎更具可读性,也更符合您用英语描述它的方式:)

希望这对您有所帮助。干杯!

import re

def recognize(self):
    if re.search(r"[a-b]", self) is not None:
        print("Red Light")
    elif re.search(r"[0-9]|/", self) is not None:
        print("Green Light")

recognize(your_string)

如果 recognize() 函数在字符串中找到一个字母,输出将是“红灯”,否则如果找到数字或“/”,输出将是“绿灯” ".