从/* */
和#if 0
以及相应#endif
之间的文件中删除所有文字的好方法是什么?我想从C头中剥离这些部分。这是我到目前为止的代码:
For line in file:
if def0Encountered == 0:
if Line.strip().startswith('#if 0') == True:
Def0StartsAt = Line.find('#if 0')
def0Encountered = 1
if Line.find('#endif')!= -1:
def0Encountered = 0
Def0EndsAt = Line.find('endif')
Line = Line[0:Def0StartsAt] + Line[Def0EndsAt + 2 : ]
List = Line.split()
答案 0 :(得分:0)
不确定这个奇怪的代码应该做什么,但是可以直接迭代遍历文件。使用两个标志来检查您是否在评论或if块中。根据字符串比较切换标志。根据两个标志的值,您可以输出当前行或忽略它....
答案 1 :(得分:0)
您可以使用正则表达式将空白字符串替换为不需要的文件部分(注意,这是非常基本的,例如对于嵌套宏不起作用):
#!/usr/bin/env python
import re
# uncomment/comment for test with a real file ...
# header = open('mycfile.c', 'r').read()
header = """
#if 0
whatever(necessary)
and maybe more
#endif
/*
* This is an original style comment
*
*/
int main (int argc, char const *argv[])
{
/* code */
return 0;
}
"""
p_macro = re.compile("#if.*?#endif", re.DOTALL)
p_comment = re.compile("/\*.*?\*/", re.DOTALL)
# Example ...
# print re.sub(p_macro, '', header)
# print re.sub(p_comment, '', header)