C/C++ 代码转换规范化的脚本
起因
一般从PDF复制下来人家的代码到TXT都是无脑缩进, 贴近最左侧; 本文主要解决这类问题。对无脑缩进到顶头的代码进行规范整理; 应该有很多IDE有这个功能
很多情况下, 都会从网上黏贴下的代码非常不规范, 没有进行合理的缩进; 于是就有了下面这个工具的产生
功能简述
- 初始化文档; 就是去掉首位的空格, del_sw_space(string )
- 合理缩进, 根据大括号出现的次数
- 解决 for/if 单行执行的缩进
代码
def setCountTab(i):
return ''.join(['\t' for x in range(i)])
def del_sw_space(string):
start = 0
end = len(string)-1
while(start < end+1):
if string[start] is not ' ':
break
else:
start += 1
while end >0:
if string[end] is not ' ':
break
else:
end -= 1
return string[start:end+1]
#print ('AAA' + del_sw_space(' fsd sdfa s fs dsa sadafew ') + 'QQQ ')
def k2(file1, file2):
modify_file = open(file2, 'w+')
g_iTabCount = 0
flag = 0 ###记录反括号缩进标志 falg = 0 表示目前有表示了
for line in open(file1, 'r+', encoding = 'utf-8').readlines():
if flag == 1:
modify_file.write('\t')
flag = 0
modify_file.write(setCountTab(g_iTabCount))
modify_file.writelines(del_sw_space(line))
if '{' in line:
g_iTabCount += 1
if '}' in line:
g_iTabCount -= 1
if '//' in line: ##专门解决 () // 下面换行的有注释的情况
pre_line = del_sw_space(line.split('//')[0])
print(pre_line)
if pre_line.endswith(')'):
flag = 1
if line.endswith(')\n') :
flag = 1
modify_file.close()
file1 = 'L:\\py_2cpp\\demo.txt'
file2 = 'L:\\py_2cpp\\temp.txt'
k2(file1, file2)