Python: como gerar um número de telefone Aleatório?
não é um duplicado de Fazendo número de telefone Aleatório xxx-xxx-xxxxx
o meu projecto usa python-phonenumbers e Django-phonenumber-field para a validação do número de telefone. Dentro do projeto estão vastas listas de regras de validação personalizadas, para as quais uma abordagem ingênua como esta não será suficiente:
>>> 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
Então, sem recorrer a uma força bruta enquanto o laço não tem limite superior, e sem introduzir um limite superior para problemas tão triviais, o que existem melhores formas de gerar números de telefone válidos aceites pelo próprio validador?
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
2
1 answers
Acho que a resposta que o davidn deu a esta pergunta deve funcionar especialmente porque já está a usar Python-phonenumbers
Eu recomendaria usar o pacote phonenumbers que é um python porto do número libphonen da Google, que inclui um conjunto de dados de telemóvel agora:
Isto vai ... return True in case number is a mobile number or False otherwise. Notar que o número deve ser um número internacional válido ou uma excepção será lançado. Você também pode usar fonenumbers para processar o número de fononename dado uma dica de região.import phonenumbers from phonenumbers import carrier from phonenumbers.phonenumberutil import number_type number = "+49 176 1234 5678" carrier._is_mobile(number_type(phonenumbers.parse(number)))
3
Author: mucle6, 2018-09-11 15:01:08