如何使用Python判断字符串是否以数字开头?

140

我有一个以数字(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

有更聪明/更有效的方法吗?


1
如果有人问:“这个是否太过重复了?”,那么在高级语言中,答案很可能是:“是的,确实如此”。偷懒! - user166390
58
你漏掉了 string.startswith('1') - MAK
2
@Illusionist 根据你的问题,你想检测以一个数字开头的字符串。如果是这样,以下答案中唯一正确的答案不是使用 s[0]s[:1] 的答案,而是 John Machin 的解决方案:if s.startswith(tuple('0123456789'))。此外,当发生 s 是元组或列表等序列时,该解决方案会引发错误,这些情况产生与字符串相同的结果。- 另一种解决方案是正则表达式,其模式为 **'\d(?=\D)'**,但在这里使用正则表达式是多余的。 - eyquem
4
有点吹毛求疵,string是标准库中的一个模块,可能不应该用作变量名。http://docs.python.org/2/library/string.html - gak
12个回答

-2

-5

试试这个:

if string[0] in range(10):

1
这根本不起作用。range(10)生成一个整数列表,而string[0]是长度为1的字符串。 - Petri Lehtinen
1
那不起作用,类型不匹配。但是:if string[0] in map(str,range(10))可以工作。 - phynfo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接