Skip to main content
 首页 » 编程设计

python之使用正则表达式搜索文件并返回函数名列表

2025年02月15日47txw1958

所以我有包含函数的代码文件,我需要设计一个函数,该函数将通过每一行代码进行教学,并返回一个列表,该列表仅捕获文件中函数的函数名称。例如,第一个文件如下所示:

def this_is_a_function(): 
    return 20 
 
def fun(): 
    return 'this is fun!' 

使用我的函数,我应该有一个列表,如果打印应该返回这个:

this_is_a_function 
fun 

这是我一直在使用的代码:

import re 
 
def get_func_names(filename): 
    """doc""" 
    infile = open(filename) 
    data = infile.readlines()     
    result = [] 
    for line in data: 
        matching = re.search(r'\s*def (\w+)', line) 
        if matching != None: 
            result += matching.group(1) 
    return result 

它确实正确地捕获了所有字母,但它们都是单独打印的,而不是像这样作为一个完整的函数名称(这是结果的打印和排序版本):

_ 
_ 
_ 
a 
c 
f 
f 
h 
i 
i 
i 
n 
n 
n 
o 
s 
s 
t 
t 
u 
u 

有什么我可以改变我的正则表达式,它会暂时捕获名称而不是每个字母和/或下划线....

请您参考如下方法:

a += b 当应用于可迭代的东西时,就像 a.extend(b) 一样,它将 b 的每个元素添加到 一个。

由于字符串是可迭代的,当使用 += 时,Python 获取字符串的每个元素并将其添加到列表中。相反,使用 result.append(matching.group(1))。