Search code examples
stringpython-3.xcomments

How to remove '#' comments from a string?


The problem: Implement a Python function called stripComments(code) where code is a parameter that takes a string containing the Python code. The function stripComments() returns the code with all comments removed.

I have:

def stripComments(code):
   code = str(code)
   for line in code:
       comments = [word[1:] for word in code.split() if word[0] == '#']
       del(comments)
stripComments(code)

I'm not sure how to specifically tell python to search through each line of the string and when it finds a hashtag, to delete the rest of the line. Please help. :(


Solution

  • You could achieve this through re.sub function.

    import re
    def stripComments(code):
        code = str(code)
        return re.sub(r'(?m)^ *#.*\n?', '', code)
    
    print(stripComments("""#foo bar
    bar foo
    # buz"""))
    

    (?m) enables the multiline mode. ^ asserts that we are at the start. <space>*# matches the character # at the start with or without preceding spaces. .* matches all the following characters except line breaks. Replacing those matched characters with empty string will give you the string with comment lines deleted.