我得到以下结果:
>>> x = '-15'
>>> print x.isdigit()
False
我希望它是True
。似乎没有内置函数为负数字符串返回True
。有什么建议去检测它?
答案 0 :(得分:7)
推荐的方法是try
:
try:
x = int(x)
except ValueError:
print "{} is not an integer".format(x)
如果您还需要小数,请使用float()
代替int()
。
答案 1 :(得分:3)
可能有更优雅的Python方式,但一般方法是检查第一个字符是否为'-'
,如果是,请在第二个字符上调用isdigit
。
答案 2 :(得分:3)
也许正则表达式是一个开销,但这可能会在数字之前捕获+
和-
,也可以捕获float
和int
:
(基于@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