1
votes

Comment convertir 10 chiffres avec ce format XXX-XXX-XXXX au format formel américain qui ressemble à (XXX) XXX-XXXX en utilisant Python3 Regex sub

Ceci est mon essai, il met en fait le premier et les seconds groupes de 3 chiffres entre parenthèses alors que je n'ai besoin de mettre le premier groupe qu'entre parenthèses pour respecter le format formel du numéro de téléphone américain comme (XXX) XXX-XXXX. On me demande de le faire en utilisant uniquement re.sub, ce qui signifie que c'est une question de modèle et une syntaxe correcte qui me manque en fait. Merci beaucoup.

import re 
def convert_phone_number(phone): 
   result = re.sub(r"(\d+-)", r"(\1)", phone) # my actual pattern - change only this line
   return result                              

print(convert_phone_number("My number is 212-345-9999.")) # output should be: My number is (212) 345-9999.
# my actual output: My number is (212-)(345-)9999.
print(convert_phone_number("Please call 888-555-1234")) # output should be: Please call (888) 555-1234
# my actual output: Please call (888-)(555-)1234

1 commentaires

Corrigez Wiktor Stribizew. Merci beaucoup. Par souci de connaissance, pourriez-vous m'expliquer le code, sinon, me donner une référence en ligne pour apprendre et maîtriser cette compétence re.sub déroutante. Merci beaucoup. Postez-le sous forme de code afin que je puisse cliquer dessus comme solution. Meilleures salutations.


3 Réponses :


2
votes

Vous pouvez utiliser

re.sub(r'(?<!\S)(\d{3})-', r'(\1) ', phone)

Voir la démo de regex

Détails

  • (?<!\S) - une limite d'espace blanc à gauche
  • (\d{3}) - Groupe de capture n ° 1: trois chiffres
  • - - un trait d'union.

Le remplacement est la valeur du groupe 1 entre crochets et un espace après (qui remplacera le trait d'union).


1 commentaires

@ Cyber-Tech Si vous avez besoin de plus de précisions, veuillez laisser un commentaire ici.



1
votes

re.sub (r "\ b \ s (\ d {3}) -", r "(\ 1)", téléphone)


1 commentaires

Cela capture le caractère d'espacement précédent.



0
votes
import re
def convert_phone_number(phone):
  result = re.sub(r"\b\s(\d{3})-\b", r" (\1) ", phone)
  return result

0 commentaires