Я не знаю, знакомы ли вы с sed
, базирующейся на UNIX (но доступной для Windows) программой синтаксического анализа текста, но я нашел скрипт sed здесь , который удалит C / C ++ комментарии из файла. Это очень умно; например, он будет игнорировать «//» и «/ *», если он найден в объявлении строки, и т. д. В Python его можно использовать, используя следующий код:
import subprocess
from cStringIO import StringIO
input = StringIO(source_code) # source_code is a string with the source code.
output = StringIO()
process = subprocess.Popen(['sed', '/path/to/remccoms3.sed'],
input=input, output=output)
return_code = process.wait()
stripped_code = output.getvalue()
В этой программе source_code
- это переменная, содержащая исходный код C / C ++, и в конечном итоге stripped_code
будет содержать код C / C ++ с удаленными комментариями. Конечно, если у вас есть файл на диске, вы можете иметь переменные input
и output
в качестве файловых дескрипторов, указывающих на эти файлы (input
в режиме чтения, output
в режиме записи). remccoms3.sed
- это файл по вышеуказанной ссылке, и его следует сохранить в удобочитаемом месте на диске. sed
также доступен в Windows и устанавливается по умолчанию в большинстве дистрибутивов GNU / Linux и Mac OS X.
Это, вероятно, будет лучше, чем решение на чистом Python; не нужно изобретать велосипед.