Python 在文件中查找方法的字符串

Python 在文件中查找方法的字符串,python,Python,现在我要找到一个方法 def getMethod(text, a, filetype): start = a fin = a if filetype == "cs": for x in range(a, 0, -1): if text[x] == "{": start = x break for x in range(a, len(text)):

现在我要找到一个方法

def getMethod(text, a, filetype):
    start = a
    fin = a
    if filetype == "cs":
        for x in range(a, 0, -1):
            if text[x] == "{":
                start = x
                break
        for x in range(a, len(text)):
            if text[x] == "}":
                fin = x
                break
    return text[start:fin + 1]
如何获取索引
a
所在的方法

我不能只找到
{
}
,因为你可以有像
新的{}
这样的东西,但它们不起作用

如果我有一个包含几个方法的文件,并且我想找到x的索引所在的方法,那么我想要这个方法的主体,例如,如果我有这个文件

private string x(){
    return "x";
}

private string b(){
    return "b";
}

private string z(){
    return "z";
}

private string a(){
    var n = new {l = "l"};
    return "a";
}
我得到了a的指数,比如说是100

然后我想找到这个方法的主体。所以
{
}

所以这个

{
    var n = new {l = "l"};
    return "a";
}
但使用我现在拥有的,它会返回:

                {l = "l"};
    return "a";
}

如果我的解释是正确的,那么您似乎正在试图解析C源代码,以找到在
.cs
文件中包含给定位置
a
的C方法,该文件的内容包含在
text

不幸的是,如果你想做一个完整和准确的工作,我想你需要一个完整的


如果这听起来太多工作,我会考虑使用与C#兼容的版本来生成标记文件,然后在标记文件中搜索适用于给定源文件行而不是原始源文件的方法

正如Simon所说,如果您的问题是解析源代码,那么最好的办法就是为该语言找到一个合适的解析器

但是,如果您只是想匹配大括号,那么有一个众所周知的算法:


请注意,由于源代码是一个复杂的庞然大物,所以不要期望它能100%工作。

您能举一个您试图匹配的示例吗?你的问题没有足够的背景。这些都是什么样的“方法”,你在搜索什么?好了。我想这可以解释得更清楚一些。+1:这是一个很好的解决方案,在很多情况下都应该是令人满意的。