如何判断string是否以数字开头?
我有一个string,从数字开始(从0-9)我知道我可以“或”使用startswith()的10个testing用例,但可能是一个整洁的解决scheme
所以而不是写作
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 有一个更聪明/更有效的方法吗?
  Python的string库有isdigit()方法: 
 string[0].isdigit() 
 >>> string = '1abc' >>> string[0].isdigit() True 
有时候,你可以使用正则expression式
 >>> import re >>> re.search('^\s*[0-9]',"0abc") <_sre.SRE_Match object at 0xb7722fa8> 
 你的代码不会工作。 你需要or代替||  。 
尝试
 '0' <= strg[:1] <= '9' 
要么
 strg[:1] in '0123456789' 
或者,如果你真的为启动而疯狂,
 strg.startswith(('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')) 
 for s in ("fukushima", "123 is a number", ""): print s.ljust(20), s[0].isdigit() if s else False 
结果
 fukushima False 123 is a number True False 
 你也可以用try...except : 
 try: int(string[0]) # do your stuff except: pass # or do your stuff 
这里是我的“答案”(试图在这里是独一无二的,我实际上不build议这种特殊情况:-)
 运用   ord()和  特殊的a <= b <= cforms: 
 //starts_with_digit = ord('0') <= ord(mystring[0]) <= ord('9') //I was thinking too much in C. Strings are perfectly comparable. starts_with_digit = '0' <= mystring[0] <= '9' 
  (这个a <= b <= c ,就像a < b < c ,是一个特殊的Python结构,比较1 < 2 < 3 (true)和1 < 3 < 2 (false)和(1 < 3) < 2 (true)。这不是在大多数其他语言中的工作原理。) 
使用正则expression式 :
 import re //starts_with_digit = re.match(r"^\d", mystring) is not None //re.match is already anchored starts_with_digit = re.match(r"\d", mystring) is not None 
使用正则expression式 ,如果你要以某种方式扩展方法的function。
你可以使用正则expression式 。
您可以使用以下方式检测数字
 if(re.search([0-9], yourstring[:1])): #do something 
[0-9]参数匹配任何数字,而yourstring [:1]匹配string的第一个字符
尝试这个:
 if string[0] in range(10):