Генератор номеров телефонов python

Python: Как сгенерировать случайный номер телефона?

В моем проекте используются 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 

2 ответа

Я думаю, что ответ, который давидн дал на этот вопрос, должен сработать, особенно если вы уже используете python -телефонные номера

Я бы порекомендовал использовать пакет phonenumbers, который является портом Python для библиотеки libphonenumber от Google, который теперь включает в себя набор данных мобильных операторов:

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))) 

Это вернет True в случае, если номер является номером мобильного телефона или False в противном случае. Обратите внимание, что номер должен быть действительным международным номером, иначе будет выдано исключение. Вы также можете использовать номера телефонов для анализа номера телефона с учетом подсказки региона.

Читайте также:  Вывести английский алфавит python

Если вы используете пакет faker , вы можете написать собственного провайдера, который можно -используется по всему вашему проекту.

import phonenumbers from faker.providers.phone_number.en_US import Provider class CustomPhoneProvider(Provider): def phone_number(self): while True: phone_number = self.numerify(self.random_element(self.formats)) parsed_number = phonenumbers.parse(phone_number, 'US') if phonenumbers.is_valid_number(parsed_number): return phonenumbers.format_number( parsed_number, phonenumbers.PhoneNumberFormat.E164 ) 
import factory from faker import Faker from .models import User from .providers import CustomPhoneProvider fake = Faker() fake.add_provider(CustomPhoneProvider) class UserFactory(factory.DjangoModelFactory): class Meta: model = User first_name = factory.Faker('first_name') last_name = factory.Faker('last_name') phone_number = factory.LazyAttribute(lambda _: fake.phone_number()) 

Источник

Python Tkinter Project: Random mobile number generator

Featured Random Mobile Number

Hello Tkinter coders! Today we are going to learn to build our own random mobile number generator. The application can be really helpful for developers who need some fake data to work on.

Creating a Random Mobile Number Generator in Python

Let’s get right into the steps to create our random number generator using Tkinter. It’s a fun little application that you’ll enjoy working on and somethign you can show off in your beginner portfolios too!

Step 1: Importing Modules and Creating a Tkinter Window

The first step in any Tkinter project is to import the tkinter and random modules and then create a blank window to work on. We can configure the window according to our own preferences.

We will be providing the window with a title and background color. Along with this we will set the resize attributes of the window as false .

import tkinter as tk window = tk.Tk() window.geometry("600x200") window.config(bg="#F39C12") window.resizable(width=False,height=False) window.title('Random Mobile Number Generator') window.mainloop()

Initial Black Screen Tkinter

Step 2: Adding Widgets on the Window Created

The step involves addition of various widgets on the window that we just created which include labels and buttons. We will also create a blank label which will be set to the mobile number generated in the later sections.

For each widget, we will be creating the widget variable and then place them on the screen with the help of the place function which requires the x and y coordinates of the widget.

import tkinter as tk window = tk.Tk() window.geometry("600x200") window.config(bg="#F39C12") window.resizable(width=False,height=False) window.title('Random Mobile Number Generator') l1 = tk.Label(text="Random Mobile Number Generator",font=("Arial",20),bg="Black",fg="White") b1 = tk.Button(text="Click on me to generate a mobile number",font=("Arial",15),bg="#A3E4D7") l2 = tk.Label(bg="#F39C12",font=("Arial",30),text="") l1.place(x=100,y=20) b1.place(x=110,y=70) l2.place(x=165,y=130) window.mainloop()

Design Screen Tkinter

Step 3: Creating a function to generate a random number

Now coming to creating a function to generate the random number we will be making use of the random module and then create a list that contains all the digits from 0-9 in form of strings stored together.

We would initiate a number variable as an empty string and choose 10 random digits from the list and keep appending them into the number variable. Lastly, we would set the text of the empty string as the number generated.

After that don’t forget to add the function name in the button declaration as the command property. And you are all set!

import random def generate_number(): list = ["0","1","2","3","4","5","6","7","8","9"] number = "" for i in range(10): number = number + random.choice(list) l2.config(text = number)

The Final Code

import random def generate_number(): list = ["0","1","2","3","4","5","6","7","8","9"] number = "" for i in range(10): number = number + random.choice(list) l2.config(text = number) import tkinter as tk window = tk.Tk() window.geometry("600x200") window.config(bg="#F39C12") window.resizable(width=False,height=False) window.title('Random Mobile Number Generator') l1 = tk.Label(text="Random Mobile Number Generator",font=("Arial",20),bg="Black",fg="White") b1 = tk.Button(text="Click on me to generate a mobile number",font=("Arial",15),bg="#A3E4D7",command=generate_number) l2 = tk.Label(bg="#F39C12",font=("Arial",30),text="") l1.place(x=100,y=20) b1.place(x=110,y=70) l2.place(x=165,y=130) window.mainloop()

Some Sample Outputs

Random Number Output 1

Random Number Output 2

Conclusion

Congratulations! Today we learned how to generate mobile numbers using python tkinter technology! Try it out yourself!

Thank you for reading! Stay tuned to learn more!

Источник

Русские Блоги

Python помогает генерировать номера мобильных телефонов партиями

Обычно в процессе работы иногда бывает большое количествономер мобильного телефона, Для проверки некоторых конкретных бизнес-функций, чтобы убедиться в достоверности теста, номер мобильного телефонааутентичностьОсобенно важно.

Как соблюдать требованияпартиягенерироватьА как насчет реальных номеров сотовых телефонов?

Цель этой статьи — научить вас использовать Python для пакетной генерации номеров мобильных телефонов.

Чтобы сгенерировать номера сотовых телефонов в пакетном режиме, вам сначала необходимо понять состав 11-значных номеров сотовых телефонов, а именно:

  • Номер телефона состоит из 11 цифр, начиная с 1.
  • Значение второй цифры — 3, 4, 5, 7 или 8.
  • Третья цифра соответствует правилу генерации оператора по второй цифре
  • Последние 8 цифр — это 8 случайно сгенерированных чисел.

После знания правила составления номера мобильного телефона, а затем объединения номеров вместе, можно сгенерировать номер мобильного телефона.

def create_a_phone(): # Вторая цифра second = [3, 4, 5, 7, 8][random.randint(0, 4)] # Третья цифра third = [second] # Последние восемь цифр suffix = random.randint(9999999, 100000000) # Сшиваем номер мобильного телефона return "1<><><>".format(second, third, suffix) 

Поскольку номера трех основных операторов были обновлены и изменены, Указанный выше номер мобильного телефона может быть недействительным.

Чтобы убедиться в подлинности номера, используйте номер для полученияПриписывание номера мобильного телефона, Если местонахождение дома можно определить, оно представляет собой реальное и эффективное число.

И Taobao, и Baidu предоставляют API-интерфейсы для запроса атрибуции номера, что может быть очень удобным для запроса атрибуции номера.

def judge_phone_ava(phone): """ Определите, обоснован ли номер мобильного телефона : Param phone: номер мобильного телефона :return: """ resp_content = requests.get('http://mobsec-dianhua.baidu.com/dianhua_api/open/location?tel=%s' % phone).content txt = json.loads(resp_content) result = txt.get('response').get(phone) return result 

Повторите указанные выше операции, чтобы сгенерировать несколько случайных номеров мобильных телефонов, потому что номер генерируетсяхаотичность, Что значительно снижает ценность данных.

Если мне нужно сгенерировать номера мобильных телефонов в указанном городе партиями, описанный выше метод сделать невозможно. К счастью, есть веб-сайт (прочтите исходный текст), на котором реализована эта функция, нам нужно только смоделировать запрос с помощью Python.

Выберите атрибуцию номера мобильного телефона, включая сегмент номера, количество, мы можем быстро сгенерировать нужный номер мобильного телефона, нажмитеF12Вы можете просмотреть метод и параметры сетевого запроса.

В параметрах запросаКод городаСоответствующая выбранной провинции + городскому району, эта часть данных загружается на страницу с помощью JS.

Нам нужно только проанализировать исходный код веб-страницы, использовать регулярные выражения, чтобы найти соответствующую строку, и проанализировать ее.ID региона и название города

def get_all_citys(): """ Получить все данные о городе :return: """ headers = < 'authority': 'uutool.cn', 'pragma': 'no-cache', 'cache-control': 'no-cache', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36', 'sec-fetch-user': '?1', 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'sec-fetch-site': 'none', 'sec-fetch-mode': 'navigate', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', 'cookie': 'UM_distinctid=16f759fe6bd24b-0322efd0d180d8-1d376b5b-1aeaa0-16f759fe6beb69; CNZZDATA1275106188=191793625-1578225029-https%253A%252F%252Fwww.google.com%252F%7C1578316721', >resp = requests.get('https://uutool.cn/phone-generate/', headers=headers).text re_rule = r'areaArr:(.+?)segmentArr:' # Соответствие разрывов строк result_data = re.findall(re_rule, resp, re.S)[0].strip()[:-1] result = json.loads(result_data) # Получить все провинции provices = result.keys() # Все города citys = <> for provice in provices: current_citys = result.get(provice) # citys.extend(current_citys) for item in current_citys: citys[item.get('name')] = item.get('id') return citys 

После получения данных о соотношении между названием города и идентификатором области смоделируйте сетевой запрос, который может генерировать номера мобильных телефонов целевого города в пакетах.

citys = get_all_citys() city_name = input ('Пожалуйста, введите атрибуцию мобильного телефона:') if city_name not in citys.keys(): City_name = 'Пекин' # Получить идентификатор города city_id = citys.get(city_name) phones = generate_phones(num, city_id) # pass

С помощью описанных выше операций вы можете генерировать несколько реальных и эффективных номеров мобильных телефонов партиями в соответствии с вашими потребностями.

Затем мы можем комбинировать автоматизированные операции, чтобы максимизировать ценность генерируемых данных.

Источник

Оцените статью