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)"
3 Réponses :
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
oua
suivi d'un nombre quelconque deb
s.
@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.
import re def transform_comments(line_of_code): result = re.sub(r"#{1,}",r"//", line_of_code) return result
import re def transform_comments(line_of_code): result = re.sub(r'(#*#) ',r'// ',line_of_code) return result