编写程序,使用正则表达式提取另一个Python程序中的所有函数名。
时间: 2024-12-12 11:33:12 浏览: 5
要从Python源文件中提取所有的函数名,你可以使用Python的内置模块`re`(正则表达式)以及`ast`(抽象语法树)来解析代码。这里有一个简单的例子,展示了如何完成这个任务:
```python
import re
import ast
def extract_function_names(file_path):
# 读取文件内容
with open(file_path, 'r', encoding='utf-8') as file:
source_code = file.read()
# 使用ast模块构建抽象语法树
tree = ast.parse(source_code)
# 正则表达式匹配函数定义
pattern = r"(?ims)(def\s+[\w_]+[\(\)]*\s*:\s*)"
# 提取函数名
function_names = re.findall(pattern, source_code)
return [name.strip() for name in function_names]
# 示例用法
file_name = "your_file.py" # 替换为你要分析的文件路径
function_list = extract_function_names(file_name)
for function in function_list:
print(function)
```
这个脚本首先读取指定的Python文件,然后使用`ast.parse()`将其转换成抽象语法树。接着,我们定义了一个正则表达式模式,用于识别`def`关键字后面跟随着的函数名。`re.findall()`函数返回所有匹配到的字符串列表。最后,我们将结果中的每个函数名清理一下(移除可能的空格或尾部冒号)并打印出来。
阅读全文