PHP前端开发

将python代码和注释分离的方法_python

百变鹏仔 2小时前 #Python
文章标签 注释

下面为大家分享一篇将python代码和注释分离的方法,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧

python的注释方式和C语言、C++、java有所不同

python语言中,使用‘#' 来进行注释,其次还有使用 三个引号来进行注释

本文的程序将把 python 中 使用‘#' 号 好 三个引号的注释分离出来, 当然也能再次合并回去

有需求的小伙伴可以来围观了

立即学习“Python免费学习笔记(深入)”;

#!/usr/bin/python#coding=utf-8import osimport sysreload(sys)sys.setdefaultencoding('utf-8')class Comment_Filter:#初始化参数def __init__(self):	self.file=None	self.commentfile=None	self.noncommentline=None	self.resotrefile=None	self.Commentline=[]	self.NonCommentline=[]	self.globalcomment=0#判断是不是注释行def is_Comment_Line(self,line,i):	if i > 2 and line.startswith("#"):		return 1	if line.startswith("'''") and self.globalcomment==1:		self.globalcomment=0		return 1	if line.startswith("'''") and self.globalcomment==0:		self.globalcomment=1		return 1	return self.globalcomment#保存注释行def save_Comment_Line(self,line,i):	self.Commentline.append({"line":line, "line_num":i})#保存代码行def save_NonComment_Line(self,line,i):	self.NonCommentline.append({"line":line, "line_num":i})#恢复分离的文件def restore_Org_File(self):	filename="output/"+self.filename+"_org.txt"	self.resotrefile=open(filename, "w+")	for i in range(1,len(self.Commentline)+len(self.NonCommentline)+1):		for commentline in self.Commentline:			if int(commentline['line_num'])==i:self.resotrefile.write(commentline['line'])		for noncommentline in self.NonCommentline:			if int(noncommentline['line_num'])==i:self.resotrefile.write(noncommentline['line'])	print "已输出到%s" % filename	self.resotrefile.close()#主运行函数def run(self):	if not os.path.exists("output"):		os.mkdir("output")	print "请输入要处理的文件名"	input_file_name=raw_input()	while len(input_file_name)>1:		print "处理文件为%s" % input_file_name		self.file=open(input_file_name)		self.filename=input_file_name.split(".")[1]		commentfilename="output/"+input_file_name.split(".")[1]+"_comment.txt"		self.commentfile=open(commentfilename,"w+")		noncommentlinename="output/"+input_file_name.split(".")[1]+"_code.txt"		self.noncommentline=open(noncommentlinename,"w+")		i = 0		while self.file != None:			line = self.file.readline()			i +=1			if not line:print "文件已读完"print "以下是注释内容"for commentline in self.Commentline:	print "第%d行: %s" % (commentline['line_num'],commentline['line'])	self.commentfile.write(commentline['line'])		print "以下是代码内容"for noncommentline in self.NonCommentline:	print "第%d行: %s" % (noncommentline['line_num'],noncommentline['line'])	self.noncommentline.write(noncommentline['line'])restore=raw_input("是否恢复成原文件:")if restore == 'Y':	self.restore_Org_File()self.commentfile.close()self.noncommentline.close()break			if self.is_Comment_Line(line,i):self.save_Comment_Line(line,i)			else:self.save_NonComment_Line(line,i)		print "请输入文件名"		input_file_name=raw_input('if quit,please input Q:')		if input_file_name == 'Q':			breakif __name__ == '__main__':print '''		***************************************** 		**  Welcome to Spider of baidutieba ** 		**   Created on 2017-05-03     ** 		**   @author: Jimy _Fengqi     ** 		*****************************************'''my_file_pide_filter=Comment_Filter()my_file_pide_filter.run()

本程序已知问题, 不能处理 空格之后在以‘#' 开头的注释,所有的注释行,必须是顶格写的

以后有时间的话,再重新写一版完整的吧