所以我有包含函数的代码文件,我需要设计一个函数,它将通过代码的每一行进行教学,并返回一个列表,该列表仅捕获文件中函数的函数名称。例如,第一个文件如下所示:
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
关于我的正则表达式,我是否可以更改某些内容,而不是每个字母和/或下划线......
答案 0 :(得分:1)
a += b
在应用于可迭代的内容时就像a.extend(b)
一样,会将b
的每个元素添加到a
。
由于字符串是可迭代的,因此在使用+=
时,Python会获取字符串的每个元素并将其添加到列表中。相反,请使用result.append(matching.group(1))
。