如:
def aa(i):
print i
a=[1,2,3]
b=2
c=3
能识别出起始位def aa(i):
和结束位" a=[1,2,3]"?
像Python对语法这么要求严格的我觉得就不要用正则了,效率不高。直接用判断就可以了,我写了个识别顶级函数的,抛砖引玉:
Python code:
s = r'''
def aa(i):
print i
a=[1,2,3]
b=2
c=3
def a():
print\
'w'
'''
def findFunc(s):
result = []
begin = False
def show(x): print '\n***Function***:\n', '\n'.join(x)
ss = s.split('\n')
for i,row in enumerate(ss):
if len(row)==0: continue
if begin:
if row.startswith(' '):
result.append(row)
elif ss[i-1].endswith('\\'):
result.append(row)
else:
show(result)
begin = False
result = []
if row.startswith('def '):
begin = True
result.append(row)
show(result)
findFunc(s)
我觉得应该用ast 才能把他正确解释出来
e.g.,
import ast
class V(ast.NodeVisitor):
def visit_FunctionDef(self, node):
print 'def %s' % (node.name)
s='''
def aa(i):
print i
a = [ 1, 2, 3]
b = 2
c = 3
'''
t = ast.parse(s)
V().visit(t)
相关问答:
已知Python 中:
s = unicode("测试", "gb2312")
s = u'\u6d4b\u8bd5'
print s
测试
在Delphi里面如何将\u6d4b\u8bd5这样的还原成Gb2312的汉字呢?
找到个方法
......
s='aaa111aaa,bbb222,333ccc,444ddd444,555eee666,fff777ggg'
用正则表达式取出 前后字母相同的数据 结果如下:
111 ddd
谢谢~
Python code:
import re
s='aaa111aaa,bbb222,333ccc,444ddd444,555eee666,ff ......
大家好,我是一个新手,刚开始学python,但是刚开始的helloworld都没法打印,让我很无奈。
我的python安装路径为f:\python31。在path中也设置对了,在windows下运行是这样显示的,希望各位前辈指点一下。谢谢
Pyth ......
我用Python写了一个小脚本,作用是统计我e:\download目录下文件都包含了哪些扩展名,并打印出来,但是不知道为什么,这个脚本虽然可以正常的运行,但是运行的非常非常慢,平均每一次运行的时间都超过了1分钟才有结果 ......
RowNum=18
ColumnNum=10
SquareList=[[0 for a in range(ColumnNum)] for b in range(RowNum)]
ActiveList=[[0 for a in range(ColumnNum)] for b in range(RowNum)]
ActiveList[0][5]=1
SquareL ......