如何在数字为负数时确定字符串是否为数字

时间:2013-07-05 21:06:58

标签: python

我得到以下结果:

>>> x = '-15'
>>> print x.isdigit()
False

我希望它是True。似乎没有内置函数为负数字符串返回True。有什么建议去检测它?

4 个答案:

答案 0 :(得分:7)

推荐的方法是try

try:
    x = int(x)
except ValueError:
    print "{} is not an integer".format(x)

如果您还需要小数,请使用float()代替int()

答案 1 :(得分:3)

可能有更优雅的Python方式,但一般方法是检查第一个字符是否为'-',如果是,请在第二个字符上调用isdigit

答案 2 :(得分:3)

也许正则表达式是一个开销,但这可能会在数字之前捕获+-,也可以捕获floatint

(基于@Mark的评论)

<强> CODE:

import re

def isdigit(string):
    return bool(re.match(r'[-+]?(?:\d+(?:\.\d*)?|\.\d+)', string))

<强>样本:

print isdigit('12')       # True
print isdigit('-12')      # True
print isdigit('aa')       # False
print isdigit('1a2a')     # False
print isdigit('-12-12')   # False
print isdigit('-12.001')  # True
print isdigit('+12.001')  # True
print isdigit('.001')     # True
print isdigit('+.001')    # True
print isdigit('-.001')    # True
print isdigit('-.')       # False

答案 3 :(得分:1)

使用public class CustomLocaleResolver extends AcceptHeaderLocaleResolver { @Override @NonNull public Locale resolveLocale(HttpServletRequest request) { final String acceptLanguage = request.getHeader(ACCEPT_LANGUAGE); if (isNotEmpty(acceptLanguage)) { if (forLanguageTag(acceptLanguage).getLanguage().equals(GERMAN.getLanguage())) { return GERMAN; } } return ENGLISH; } }

lstrip