0

テキストファイル(この場合は実際にはPythonファイル)を反復処理するforループがあり、すべての関数を抽出しようとしています(単語を探しますdef)。その単語が見つかると、空白スペース(関数の終わりを示すために使用しています)に到達するまで行の記録を開始します。

私の問題はdef、ファイルでaをヒットしたらバックアップし、関数の前に来る可能性のあるコメントを記録したいということです。例:# This function does the following...など。ハッシュがヒットしなくなるまでバックアップしたい。

私が書いたこのループをどのように振り返りますか?

for (counter,line) in enumerate(visible_texts):
    line= line.encode('utf-8')
# if line doesn't contain def then ignore it
    if "def" in line and infunction== 0:
        match = re.search(r'\def (\w+)', line.strip())
        line = line.split ("def")[1]    
        print "Recording start of the function..."
        # Backup to see if there's any hashes above it (until the end of the hashes) ** how do I do this **

最後に必要な出力の例は次のとおりです。

# This function was created by Thomas
# This function print a pass string into the function    
def printme( str ):
       "This prints a passed string into this function"
       print str
       return
4

2 に答える 2

5

バックアップしないでください。別の行に到達するまで、コメントを記録します。行でない場合は、def収集したコメントを破棄します。

comments = []
for (counter, line) in enumerate(visible_texts):
    if line.lstrip().startswith('#'):
        comments.append(line)
    elif "def" in line and not infunction:
        comment = '\n'.join(comments)
        comments = []
        # rest of your code
    else:
        comments = []
于 2012-12-22T19:09:23.300 に答える
0

astこのモジュールを使用して、Pythonコードを解析できます。

関数を説明するためにコメントの代わりにdocstringを使用する習慣を身につける必要があります。

利点の1つは、astモジュールがを使用してこれらのdocstringを取得できることast.get_docstring()です。

于 2012-12-22T19:44:00.440 に答える