我想用python执行以下操作:
我是python的新手,我相信这应该用正则表达式来完成,除了最后一个。感谢您的帮助!
答案 0 :(得分:6)
正则表达式不是一个好的解决方案。
验证UTF8字符串是否为整数:
try:
int(val)
is_int = True
except ValueError:
is_int = False
验证UTF8字符串是否为浮点数:与上述相同,但使用float()
。
验证UTF8字符串的长度是否为(1-255):
is_of_appropriate_length = 1 <= len(val) <= 255
验证UTF8字符串是否为有效日期:这不是一件容易的事。如果您知道正确的格式,可以使用time.strptime()
,如下所示:
# Validate that the date is in the YYYY-MM-DD format.
import time
try:
time.strptime(val, '%Y-%m-%d')
is_in_valid_format= True
except ValueError:
is_in_valid_format = False
编辑:需要注意的另一件事。由于您特别提到了UTF-8字符串,因此首先将它们解码为Unicode是有意义的。这将通过以下方式完成:
my_unicode_string = my_utf8_string.decode('utf8')
有趣的是,例如,当尝试使用int()
将Unicode字符串转换为整数时,您不仅限于世界上大多数地方使用的“西方阿拉伯语”数字。 int(u'١٧')
和int(u'१७')
将正确解码为17,即使它们分别是印度语 - 阿拉伯语和Devangari数字。
答案 1 :(得分:2)
为什么要使用正则表达式?我确信它会更慢,更麻烦。
int()
和float()
方法或更好的isdigit()
方法在这里运作良好。
a = "03523"
a.isdigit()
>>> True
b = "963spam"
b.isdigit()
>>> False
对于问题3,您的意思是“验证UTF8字符串是否为长度数(1-255)”?
为什么不:
def validnumber(n):
try:
if 255 > int(n) > 1:
return True
except ValueError:
return False
答案 2 :(得分:1)