gpt4 book ai didi

python - 正则表达式捕获所有导入语句

转载 作者:行者123 更新时间:2023-11-30 22:03:07 25 4
gpt4 key购买 nike

我想创建一个脚本来查看 Python 文件并找到所有 import声明。这些可能的变化如下:

import os
import numpy as np
from itertools import accumulate
from collections import Counter as C
from pandas import *
<小时/>

通过查看这些内容,人们可能会认为逻辑应该是:

获取全部 <foo>来自from <foo>声明和那些<bar>来自import <bar>前面没有 from <foo> .

为了用正则表达式翻译上面的内容,我写道:

from (\w+)|(?<!from \w+)import (\w+)

问题似乎在于负向后查找的非固定宽度,但我似乎无法修复它。

编辑:

作为奖励,捕获多个包含内容也很好,如下所示:

import sys, glob

最佳答案

您似乎只想从行首提取匹配项,并考虑到前导空格。

您可以考虑使用

^\s*(?:from|import)\s+(\w+(?:\s*,\s*\w+)*)

请参阅regex demo .

详细信息

  • ^ - 字符串的开头(使用 re.M 也可以匹配行的开头)
  • \s* - 0+ 空格(使用 [^\S\r\n]* 仅匹配水平空格)
  • (?:from|import) - 两个单词之一
  • \s+ - 1 个以上空格
  • (\w+(?:\s*,\s*\w+)*) - 1 个或多个单词字符,后跟 0+ 次出现的 0+ 空格,,,0+ 个空格,然后 1+ 个单词字符。

在 Python 中,您稍后可以使用 re.split(r'\s*,\s*', group_1_value) 拆分第 1 组值,以获取各个以逗号分隔的模块名称。

关于python - 正则表达式捕获所有导入语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53632274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com