Python: методы удаления комментариев из кода

Чтобы удалить все комментарии из кода Python, вы можете использовать несколько методов. Вот несколько подходов:

  1. Метод с регулярным выражением (regex):
    Вы можете использовать регулярные выражения для сопоставления и удаления комментариев из кода. Вот пример использования модуля reв Python:

    import re
    def remove_comments(code):
       pattern = r"(\".*?\"|\'.*?\')|(/\*.*?\*/|//[^\r\n]*$)"
       return re.sub(pattern, lambda match: match.group(1) if match.group(1) else '', code, flags=re.MULTILINE|re.DOTALL)
    # Example usage:
    code_with_comments = '''
    def hello_world():
       # This is a comment
       print("Hello, World!")  # This is another comment
    '''
    code_without_comments = remove_comments(code_with_comments)
    print(code_without_comments)

    Этот метод использует шаблон регулярного выражения для сопоставления как комментариев блока (/*... */), так и комментариев строк (//...). Он также учитывает строковые литералы, чтобы избежать удаления комментариев, встроенных в строки.

  2. Метод на основе токенов.
    Другой подход — использовать модуль tokenizeв Python, который позволяет токенизировать код и анализировать токены. Вы можете отфильтровать токены комментариев и восстановить код без комментариев. Вот пример:

    import tokenize
    from io import BytesIO
    def remove_comments(code):
       result = []
       g = tokenize.generate_tokens(BytesIO(code.encode('utf-8')).readline)
       for toknum, tokval, _, _, _ in g:
           if toknum != tokenize.COMMENT:
               result.append(tokval)
       return ''.join(result)
    # Example usage:
    code_with_comments = '''
    def hello_world():
       # This is a comment
       print("Hello, World!")  # This is another comment
    '''
    code_without_comments = remove_comments(code_with_comments)
    print(code_without_comments)

    Этот метод использует функцию tokenize.generate_tokens()для токенизации кода и фильтрации токенов комментариев.

Это всего лишь несколько способов удаления комментариев из кода Python. В зависимости от ваших конкретных требований вы можете выбрать тот, который лучше всего соответствует вашим потребностям.