2017-05-28 11 views
-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

+1

なぜ犬を持っているし、自分を吠え? ['ast.parse()'](https://docs.python.org/3/library/ast.html#ast.parse)を使って、結果のASTツリーを見てください。 –

+0

@MartijinPieters私に例を挙げてください。 –

+0

回答を書く過程。 :-) –

答えて

関連する問題