0
votes

Vous voulez remplacer plusieurs occurrences de # à // en utilisant la méthode 'sub ()' du module / classe de regex python

La fonction transform_comments convertit les commentaires d'un script Python en ceux utilisables par un compilateur C. Cela signifie rechercher du texte commençant par une marque dièse (#) et le remplacer par des doubles barres obliques (//), qui est l'indicateur de commentaire sur une seule ligne C. Pour les besoins de cet exercice, nous ignorerons la possibilité d'une marque de hachage intégrée à l'intérieur d'une commande Python et supposerons qu'elle n'est utilisée que pour indiquer un commentaire. Nous voulons également traiter les marques de hachage répétitives (##), (###), etc., comme un seul indicateur de commentaire, à remplacer par juste (//) et non par (# //) ou (// #) . Renseignez les paramètres de la méthode de substitution pour compléter cette fonction:

Voici mon essai:

import re
def transform_comments(line_of_code):
  result = re.sub(r'###',r'//', line_of_code)
  return result

print(transform_comments("### Start of program")) 
# Should be "// Start of program"
print(transform_comments("  number = 0   ## Initialize the variable")) 
# Should be "  number = 0   // Initialize the variable"
print(transform_comments("  number += 1   # Increment the variable")) 
# Should be "  number += 1   // Increment the variable"
print(transform_comments("  return(number)")) 
# Should be "  return(number)"


0 commentaires

3 Réponses :


1
votes

Utilisez l'opérateur * regex

def transform_comments(line_of_code):
  result = re.sub(r'##*',r'//', line_of_code)
  return result

à partir des documents de la bibliothèque re

* Fait correspondre la RE résultante à 0 ou plus de répétitions de la RE précédente, autant de répétitions que possible. ab* correspondra à a , ab ou a suivi d'un nombre quelconque de b s.


1 commentaires

@HH merci pour l'aide que votre solution fonctionne, mais j'ai essayé plus tard avec ce result = re.sub(r'\#+',r'//', line_of_code) et cela fonctionne également.



0
votes
import re
def transform_comments(line_of_code):
    result = re.sub(r"#{1,}",r"//", line_of_code)
    return result

0 commentaires

0
votes
import re
def transform_comments(line_of_code):
  result = re.sub(r'(#*#) ',r'// ',line_of_code)
  return result

0 commentaires