【发布时间】:2011-07-31 10:54:23
【问题描述】:
我有一个以数字开头的字符串(从 0 到 9) 我知道我可以使用startswith()“或”10个测试用例,但可能有一个更简洁的解决方案
所以不要写
if (string.startswith('0') || string.startswith('2') ||
string.startswith('3') || string.startswith('4') ||
string.startswith('5') || string.startswith('6') ||
string.startswith('7') || string.startswith('8') ||
string.startswith('9')):
#do something
有没有更聪明/更有效的方法?
【问题讨论】:
-
如果问这个问题:“这是否过于重复?”,很可能——在高级语言中——答案是“为什么,是的,确实如此”。 Be lazy!
-
你错过了
string.startswith('1')。 -
@Illusionist 正如所写,您的问题意味着您想要检测仅以一位数字开头的字符串。如果是这样,以下答案中唯一正确的答案不是使用
s[0]或s[:1]的答案,而是John Machin 的解决方案:if s.startswith(tuple('0123456789'))。此外,当 s 是像元组或列表这样的序列时,此解决方案会引发错误,这种情况会产生与字符串相同的结果。 - 另一种解决方案是一个正则表达式,它的模式是 '\d(?=\D)' 但在这里使用正则表达式是多余的。 -
只是迂腐:
string是标准库中的一个模块,可能不应该用作变量名。 docs.python.org/2/library/string.html