Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2024 23:43:30

Pavel1982
Зарегистрирован: 2024-02-27
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Алгоритм для извлечения комментариев из исходных файлов Python

Добрый день, уважаемые форумчане. Я никогда не работал с питоном, но тут возникла задача. Есть несколько проектов питона и нужно вытащить из исходников этих проектов комментарии.

Для комментариев в питоне используется либо #, либо строки, которые нигде не используются. Если с # все понято, то по поводу строк не все так просто. Так как нужно отличить те строки, которые используются (например, для переменных или в выражениях) от неиспользуемых строк.

Проделав несколько опытов в онлайн компиляторе я думаю о следующем алгоритме.
1. если перед открывающими кавычками (на линии кода, где эти кавычки) нет никаких символов (кроме whitespace)
2. И если после закрывающих кавычек (на линии когда, где эти кавычки) нет никаких символов (кроме whitespace)
3. И если строка не находится между скобками ()
4. И если предыдущая линия кода не заканчивается \
то это строка комментарии.

Примеры:

 a = "текст "
b = (a 
    + 
    
    """ Это НЕ комментарий!"""
    )
c = a + \
    """ Это НЕ комментарий!!""" 
'''
А это уже 
 комментарий
'''

Скажите, пожалуйста, является ли данный алгоритм правильным или нет? Может его нужно как-то подправить?

Отредактировано Pavel1982 (Фев. 27, 2024 23:57:12)

Офлайн

#2 Фев. 28, 2024 00:57:02

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2742
Репутация: +  183  -
Профиль   Отправить e-mail  

Алгоритм для извлечения комментариев из исходных файлов Python

> строки, которые нигде не используются

С чего ты взял что это комментарии? Обычно эти строки используются для документирования.
https://pythonist.ru/docstrings-dokumentirovanie-koda-v-python/



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Фев. 28, 2024 01:00:44

Pavel1982
Зарегистрирован: 2024-02-27
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Алгоритм для извлечения комментариев из исходных файлов Python

См Multiline Comments в https://www.w3schools.com/python/python_comments.asp

 """
This is a comment
written in
more than just one line
"""
print("Hello, World!")

Отредактировано Pavel1982 (Фев. 28, 2024 01:01:39)

Офлайн

#4 Фев. 29, 2024 21:41:46

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1348
Репутация: +  118  -
Профиль   Отправить e-mail  

Алгоритм для извлечения комментариев из исходных файлов Python

  
import ast
def extract_comments_from_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        content = file.read()
    tree = ast.parse(content)
    comments = []
    for node in ast.walk(tree):
        if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef, ast.Module)):
            # Извлекаем строку документации
            docstring = ast.get_docstring(node)
            if docstring:
                comments.append(docstring)
        if isinstance(node, ast.Expr) and isinstance(node.value, ast.Str):
            # Извлекаем многострочные комментарии
            comments.append(node.value.s)
    return comments
if __name__ == '__main__':
    res = extract_comments_from_file('temp.py')
    print(res)

Офлайн

#5 Фев. 29, 2024 21:53:54

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2742
Репутация: +  183  -
Профиль   Отправить e-mail  

Алгоритм для извлечения комментариев из исходных файлов Python

> См Multiline Comments

Ну нету в python-е многострочных комментариев. Некоторые рукожопы могут пытаться использовать строки как комментарии, но по сути они комментариями не являются.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version