У меня проблема с форматированием номера телефона в PythonPython

Программы на Python
Anonymous
У меня проблема с форматированием номера телефона в Python

Сообщение Anonymous »

Я пытаюсь отформатировать поддельные данные из Faker API. Я использую pandas для хранения его в фрейме данных. Я понял, как удалить и заменить любые ошибки, такие как отсутствие пробелов, неправильный интервал, удаление круглых скобок, код страны и расширения. Основная проблема, с которой я сталкиваюсь, заключается в том, что числа выходят следующим образом: xxxxxx-xxxx вместо xxx-xxx-xxxx.
Это мой код :

Код: Выделить всё

from faker import Faker
import pandas as pd

fake = Faker()
name = []
address = []
number = []
ssn = []

for i in range(100):
name.append(fake.name())
address.append(fake.address().replace('\n', " "))
ssn.append(fake.ssn())
phone_number = fake.phone_number().split('x')[0].replace('.',"-").replace("(",'').replace(')','').replace(' ','')
# How do to deal with the opposite of ^
if phone_number.startswith('+1'):
phone_number = phone_number[2:]
if phone_number.startswith('1'):
phone_number = phone_number[1:]
if phone_number.startswith('001'):
phone_number = phone_number[3:]

phone_number = phone_number.lstrip('-')

if phone_number.isdigit() and len(phone_number) == 12: #10 or 12 work here for some reason, but I get diff. formats
phone_number = f"{phone_number[:3]}-{phone_number[3:6]}-{phone_number[6:]}"
else:
phone_number = phone_number

number.append(phone_number)

df = pd.DataFrame({'Name':name, 'Address':address,'Phone Number':number, 'SSN':ssn})
df
Не совсем понимаю, в чем моя проблема.
Сначала я думал, что дело в длине или в том, что оно читается как целое число, а не как строка. , но когда я это сделаю:

Код: Выделить всё

    if phone_number.isdigit() and len(phone_number) == 12:
phone_number = f"{phone_number[:3]}-{phone_number[3:6]}-{phone_number[6:]}"
elif len(phone_number) != 12:
phone_number = f"{phone_number[:3]}-{phone_number[3:6]}{phone_number[6:]}"
else:
phone_number = phone_number
он ​​имеет формат xxx-xxxxxxx.

Если я сделаю это так:< /p>

Код: Выделить всё

    if phone_number.isdigit() and len(phone_number) == 10:
phone_number = f"{phone_number[:3]}-{phone_number[3:6]}-{phone_number[6:]}"
elif len(phone_number) != 10:
phone_number = f"{phone_number[:3]}-{phone_number[3:6]}{phone_number[6:]}"
else:
phone_number = phone_number
тогда числа имеют формат xxx--xxx-xxxx.

Код: Выделить всё

    if phone_number.isdigit() and len(phone_number) == 10:
phone_number = f"{phone_number[:3]}-{phone_number[3:6]}-{phone_number[6:]}"
else:
phone_number = phone_number
И если я удалю elif, я получу такой результат: «xxxxxx-xxxx».

Я застрял и не знаю, что делать.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python

Вернуться в «Python»