2024-10-03 11:16:35 发布
网友
我需要检查字符串是否只包含预定义的符号列表,并执行以下操作:
my_string = 'qwer123asd!@#$%^' tmp = str.maketrans({'0': None, 'x': None, '#': None, '$': None, 'q': None, 'i': None}) if my_string.translate(tmp) == '': print("Only predefined symbols!")
有没有更好的方法来实现这一点?在
我经常提倡regexp的替代方法,因为我认为它经常被用作寻找问题的解决方案,但是在这种情况下,我认为它可能是合适的。在
import re pat = re.compile("^[0x#$qi]*$") my_string = 'qwer123asd!@#$%^' if pat.match(my_string): print("Only predefined symbols!")
只要确保"]"是预定义的符号之一,它就是方括号内的第一个符号。在
"]"
与euromino的set方法进行快速比较后发现,使用您在问题中使用的字符串,这个速度快了3倍。pat和{}的创建被排除在计时之外,因此这是“重复使用”场景。如果将它们包括在内,差别较小,但regexp仍然更快。在
pat
my_string = 'qwer123asd!@#$%^' predef = set('0x#$qi') if set(my_string).issubset(predef): print "only predefined symbols"
我经常提倡regexp的替代方法,因为我认为它经常被用作寻找问题的解决方案,但是在这种情况下,我认为它可能是合适的。在
只要确保
"]"
是预定义的符号之一,它就是方括号内的第一个符号。在与euromino的set方法进行快速比较后发现,使用您在问题中使用的字符串,这个速度快了3倍。}的创建被排除在计时之外,因此这是“重复使用”场景。如果将它们包括在内,差别较小,但regexp仍然更快。在
pat
和{相关问题 更多 >
编程相关推荐