分页: 2 / 2

Re: 求助:文本文件匹配删除

发表于 : 2012-02-15 21:25
fnan
josephyoung 写了:
fanhe 写了:不喜欢shell了,脚本现在都直接写 python
:em01 这个问题,带嵌套的,能写个python玩玩么?我也在学python中
#只要有算法,用什么都可以。

Re: 求助:文本文件匹配删除

发表于 : 2012-02-15 23:06
fnan
kose3@kose3-desktop:~$ cat tmp2.py
#!/usr/bin/env python

import sys
delete=0

file_source = open(sys.argv[1])
for line in file_source.readlines():
if line.strip().startswith("ifneq ("): delete = delete + 1
if delete == 0: print line,
if line.strip() == "endif": delete = delete - 1
file_source.close
#极少写python,指正指正。

Re: 求助:文本文件匹配删除

发表于 : 2012-02-16 10:30
fanhe
楼主你说清楚你的需求吧,我自己是用c 写过 c 的预处理算法的,这种跟c 的预处理差不多,嵌套的分支不是这么简单的
你至少需要一个条件栈,每遇到 ifneq 就添加一个条件,只有当栈里面的所有的条件都是真时,正在读取的文本才不被忽略

Re: 求助:文本文件匹配删除

发表于 : 2012-02-16 13:07
josephyoung
fnan 写了:kose3@kose3-desktop:~$ cat tmp2.py
#!/usr/bin/env python
import sys
delete=0
file_source = open(sys.argv[1])
for line in file_source.readlines():
if line.strip().startswith("ifneq ("): delete = delete + 1
if delete == 0: print line,
if line.strip() == "endif": delete = delete - 1
file_source.close
#极少写python,指正指正。
:em01 不错,帮你缩进下
[python]#!/usr/bin/env python
import sys
delete = 0
file_source = open(sys.argv[1])
for line in file_source:
if line.strip().startswith("ifneq ("):
delete +=1
if delete == 0:
print line,
if line.strip() == "endif":
delete -= 1
file_source.close()
[/python]