所以我有包含函数的代码文件,我需要设计一个函数,该函数将通过每一行代码进行教学,并返回一个列表,该列表仅捕获文件中函数的函数名称。例如,第一个文件如下所示:
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))
。
关于python - 使用正则表达式搜索文件并返回函数名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41051165/