Ill*_*ist 74 python string digits
我有一个以数字开头的字符串(从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
Run Code Online (Sandbox Code Playgroud)
有更聪明/更有效的方式吗?
pla*_*aes 140
Python的string库有isdigit()方法:
string[0].isdigit()
Run Code Online (Sandbox Code Playgroud)
jco*_*ctx 25
>>> string = '1abc'
>>> string[0].isdigit()
True
Run Code Online (Sandbox Code Playgroud)
Pas*_*ten 13
令人惊讶的是,经过这么长时间,仍然缺少最佳答案。
其他答案的缺点是[0]用于选择第一个字符,但如前所述,这会破坏空字符串。
使用以下内容可以绕过这个问题,并且在我看来,提供了我们拥有的选项的最漂亮和最易读的语法。它也不会导入/打扰正则表达式):
>>> string = '1abc'
>>> string[:1].isdigit()
True
>>> string = ''
>>> string[:1].isdigit()
False
Run Code Online (Sandbox Code Playgroud)
有时,你可以使用正则表达式
>>> import re
>>> re.search('^\s*[0-9]',"0abc")
<_sre.SRE_Match object at 0xb7722fa8>
Run Code Online (Sandbox Code Playgroud)
你的代码不起作用; 你需要or而不是||.
尝试
'0' <= strg[:1] <= '9'
Run Code Online (Sandbox Code Playgroud)
要么
strg[:1] in '0123456789'
Run Code Online (Sandbox Code Playgroud)
或者,如果你真的很疯狂startswith,
strg.startswith(('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81277 次 |
| 最近记录: |