[英]list all the imports from the given python code as a string
列出来自给定 python 代码的所有导入
例子:
**Input**:
import string
**Output**: ['string']
示例 2:
注意:如果 package 是使用别名导入的,即“as”,它应该只打印别名而不是 package 名称
**Input:**
from string import digit, ascii_lowercase
from datetime import datetime as dt, date as d, time as t
# This is a comment
def met_02():
pass
print('print this')
**output**: ['digit', 'ascii_lowercase', 'dt', 'd', 't']
我尝试了以下代码,但它只打印导入,但它应该在别名(“as”)之后打印导入,如果存在,否则在示例 2 中提到的别名之后打印 package
def list_imports(lines):
imports = []
for file in lines:
result = re.findall(r"(?<!from)import (\w+)[\n.]|from\s+(\w+)\s+import", lines)
for imp in result:
for i in imp:
if len(i):
if i not in imports:
imports.append(i)
return (imports)
import re
def list_imports(lines):
result = []
# visit lines
for line in lines:
# get words after import definition
for modules in re.compile('import (.*)$').findall(line):
# split with comma
for module in modules.split(','):
# if module has 'as' keyword
if ' as ' in module:
# get word after 'as' keyword
result.extend(re.compile('as\s+(\w+)').findall(module))
else:
# add found module
result.append(module.strip())
return result
lines = "from string import digit, ascii_lowercase\nfrom datetime import datetime as dt, date as d, time as t".split('\n')
print(list_imports(lines))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.