Вы можете удалить комментарии, проанализировав код Python с помощью tokenize.generate_tokens
. Ниже приведен слегка измененный вариант this example from the docs:
import tokenize
import io
def nocomment(s):
result = []
g = tokenize.generate_tokens(io.BytesIO(s).readline)
for toknum, tokval, _, _, _ in g:
# print(toknum,tokval)
if toknum != tokenize.COMMENT:
result.append((toknum, tokval))
return tokenize.untokenize(result)
with open('script.py','r') as f:
content=f.read()
print(nocomment(content))
Например:
Если script.py содержит
def foo(): # Remove this comment
''' But do not remove this #1 docstring
'''
# Another comment
pass
то выход nocomment
является
def foo():
''' But do not remove this #1 docstring
'''
pass
Комментарии дон Не замедляй свой код. Почему вы хотите удалить их? – agf
У вас нет :). По крайней мере, не с простым регулярным выражением. Рассмотрим следующее: 's = 'not # a # comment!'' Или this: 's =" "" \ n foo # \ n bar "" "' (где '\ n' - фактические разрывы строк) –
@ agf, чтобы сделать вещи более трудными для следующего человека, чтобы работать над кодом! – bgw