格式化代码
2017-04-04 20:50 雄风狂飙 阅读(94) 评论(0) 收藏 举报机器学习兴起,python火热了起来。最近在学习。
正好有一个需要格式化c++代码的活要干,就用python试一下。
目前版本是一个很简单的,只是进行了 缩进4个空格的处理。详见代码.
class Stack:
def __init__(self,stack):
self.stack = stack
self.size=0
def pop(self):
elem={}
if self.size > 0:
elem = self.stack[-1]
self.stack.remove(self.stack[-1])
self.size -= 1
return elem
def push(self,elem):
#print(self.size)
#print(elem)
self.stack.append(elem)
self.size += 1
#print(self.stack)
def reverseSt(self):
self.stack.reverse()
#print(self.stack)
def getSize(self):
return self.size
def beautyCode():
infileName = input("pls input the file name with path:")
fileLine = int( input("pls input the file lines:") )
outfileName = input("pls input the new file name with path:")
#infileName = 'g:/t.txt'
#fileLine = 25
#outfileName = 'g:/ts.txt'
infile = open(infileName,'r')
lines = [ line.lstrip() for line in infile]
infile.close()
i = 0;
while i < len(lines):
#print(lines[i])
i += 1
stack = []
st = Stack(stack)
i=0
dit={}
while i < len(lines):
if '{' in lines[i]:
dit = {"{":i+1}
elif '}' in lines[i]:
dit = {"}":i+1}
else:
i+=1
continue
i+=1
st.push(dit)
st.reverseSt()
lineStart = 0
lineEnd = 0
spacecount = 0
outfile = open(outfileName,'w')
tp = st.pop()
lineEnd = list(tp.values())[0]
while lineStart < lineEnd:
strValue = " "*spacecount + lines[lineStart]
outfile.write(strValue)
lineStart += 1
spacecount += 4
while st.getSize() > 0:
tp = st.pop()
lineEnd = list( tp.values() )[0]
while lineStart < lineEnd:
strValue = ""
if '}' in lines[lineStart]:
strValue = " "*(spacecount-4) + lines[lineStart]
else:
strValue = " "*spacecount + lines[lineStart]
if lines[lineStart].count('\n') == len(lines[lineStart]):
lineStart += 1
continue
outfile.write(strValue)
lineStart += 1
if list(tp.keys())[0] == '{':
spacecount += 4
elif list(tp.keys())[0] == '}':
spacecount -= 4
outfile.flush()
outfile.close()
def main():
beautyCode()
main()
浙公网安备 33010602011771号