-1
文字列をチェックしたいのですが、それはインポートコマンドですか?私は試しましたPython 3:文字列がインポートコマンドかどうかを確認してください
# Helper - analyses a string - is it an import string?
"""
fromlike - from foo import bar
classic - import foo
classic_as - import foo as baz
"""
def check_is_import(string):
importname = ''
fromlike = False
classic = False
classic_as = False
if string[0:4] is 'from':
fromlike = True
importname = ''
if not fromlike and (string[0:6] is 'import'):
classic = True
importname = string.split(' ')[1]
if classic:
commandlist = string.split(' ')
if commandlist[2] is 'as':
classic_as = True
importname = commandlist[3]
del commandlist
if fromlike:
return ('fromlike', importname)
elif classic and (not classic_as):
return ('classic', importname)
elif classic_as:
return ('classic_as', importname)
else:
return ('no_import', importname)
しかし、それは "fromlike"のインポートのために働いた。 (注:「なぜこのコードは機能しないのですか?」という質問はしません。私はただ解決策を探しています)どのようなコードがすべてのインポートを確実に検出しますか?基本的に私のコードは、文字列のスライスを取る。 [0:4]
スライスが'from'
の場合、文字列は "fromlike import"です。その他:スライスが'import'
に等しい場合、その文字列は「古典的な読み込み」です。 'as'
が検出されると、疑似名が検索されます。この機能を使用すると、すべてのPythonのimportフォームを処理することを確認したい場合は、構文解析を行うのPythonを持っているインデックス1
なぜ犬を持っているし、自分を吠え? ['ast.parse()'](https://docs.python.org/3/library/ast.html#ast.parse)を使って、結果のASTツリーを見てください。 –
@MartijinPieters私に例を挙げてください。 –
回答を書く過程。 :-) –