不是Making random phone number xxx-xxx-xxxx的副本
我的项目使用python-phonenumbers和django-phonenumber-field进行电话号码验证。在项目中有大量的自定义验证规则,对于这些规则,像这样天真的方法是不够的:
>>> import functools
>>> import random
>>> a = functools.partial(random.randint, 0, 9)
>>> gen = lambda: "+{}-{}{}{}-{}{}{}-{}{}{}{}".format(a(), a(), a(), a(), a(), a(), a(), a(), a(), a(), a())
>>> gen()
'+2-758-702-0180' # Obviously wrong
>>> gen()
'+1-911-555-0180' # Obviously wrong, it has 911 in it
所以,如果不使用没有上限的暴力while循环,也不为这些琐碎的问题引入上限,那么有什么更好的方法来生成验证器本身接受的有效电话号码呢?
from phonenumber_field.validators import validate_international_phonenumber
from django.core.exceptions import ValidationError
def generate_valid_number():
while True: # While loops are not desired, even with an upper bound!
try:
number = gen()
validate_international_phonenumber(number)
return number
except ValidationError:
pass
目前没有回答
相关问题 更多 >
编程相关推荐