如何用Python判断字符串是否以数字开头?
我有一个以数字开头的字符串(从 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
Is there a smarter/more effective way?
I have a string that starts with a number (from 0-9)
I know I can "or" 10 test cases using startswith() but there is probably a neater solution
so instead of writing
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
Is there a cleverer/more efficient way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
Python 的
string
库有isdigit()
方法:Python's
string
library hasisdigit()
method:令人惊讶的是,过了这么长时间,仍然没有找到最佳答案。
其他答案的缺点是使用
[0]
选择第一个字符,但如上所述,这会在空字符串上中断。使用以下内容可以避免这个问题,并且在我看来,它给出了我们拥有的选项中最漂亮、最易读的语法。它也不会导入/干扰正则表达式):
Surprising that after such a long time there is still the best answer missing.
The downside of the other answers is using
[0]
to select the first character, but as noted, this breaks on the empty string.Using the following circumvents this problem, and, in my opinion, gives the prettiest and most readable syntax of the options we have. It also does not import/bother with regex either):
有时,你可以使用正则表达式
sometimes, you can use regex
你的代码将无法工作;您需要
或
而不是||
。尝试
或
或,如果你真的很喜欢
startswith
,Your code won't work; you need
or
instead of||
.Try
or
or, if you are really crazy about
startswith
,这段代码:
打印出以下内容:
This piece of code:
prints out the following:
使用内置的 字符串模块:
接受的答案适用于单个字符串。我需要一种与 pandas 一起使用的方法.Series.str.包含。可以说比使用正则表达式更具可读性,并且很好地使用了似乎并不为人所知的模块。
Using the built-in string module:
The accepted answer works well for single strings. I needed a way that works with pandas.Series.str.contains. Arguably more readable than using a regular expression and a good use of a module that doesn't seem to be well-known.
您还可以使用
try... except
:You can also use
try...except
:这是我的“答案”(试图在这里保持独特,对于这种特殊情况,我实际上并不推荐:-)
使用
ord() 和特殊的a <= b <= c
形式:(这个
a <; = b <= c
与a < b < c
一样,是一种特殊的 Python 结构,它很简洁:比较1 < 2 < 3< /code> (true) 和
1 < 3 < 2
(false) 和(1 < 3) <2
(true)。它适用于大多数其他语言。)使用正则表达式:
Here are my "answers" (trying to be unique here, I don't actually recommend either for this particular case :-)
Using
ord() andthe speciala <= b <= c
form:(This
a <= b <= c
, likea < b < c
, is a special Python construct and it's kind of neat: compare1 < 2 < 3
(true) and1 < 3 < 2
(false) and(1 < 3) < 2
(true). This isn't how it works in most other languages.)Using a regular expression:
您可以使用正则表达式。
您可以使用以下方式检测数字:
[0-9] par 匹配任何数字,yourstring[:1] 匹配字符串的第一个字符
You could use regular expressions.
You can detect digits using:
The [0-9] par matches any digit, and yourstring[:1] matches the first character of your string
使用 正则表达式,如果您打算以某种方式扩展方法的功能。
Use Regular Expressions, if you are going to somehow extend method's functionality.
试试这个:
Try this: