2016-12-09 6 views
2

私は関数を含むコードファイルを持っているので、コードの各行を教えて機能だけをキャプチャする関数を設計する必要がありますファイル内の関数の名前。たとえば、最初のファイルは次のようになります。私の機能を使用してファイルを検索し、regexを使用して関数名のリストを返す

def this_is_a_function(): 
    return 20 

def fun(): 
    return 'this is fun!' 

、私が印刷されている場合は、この返さなければならないことのリスト持っている必要があります。ここでは

this_is_a_function 
fun 

を私が使用しているコードです:

import re 

def get_func_names(filename): 
    """doc""" 
    infile = open(filename) 
    data = infile.readlines()  
    result = [] 
    for line in data: 
     matching = re.search(r'\s*def (\w+)', line) 
     if matching != None: 
      result += matching.group(1) 
    return result 

、それが正しく、すべての文字をキャプチャんが、それらはすべて別々に印刷ではなく、このような全体の関数名(これは、結果の印刷とソートバージョンである)のようにされています

_ 
_ 
_ 
a 
c 
f 
f 
h 
i 
i 
i 
n 
n 
n 
o 
s 
s 
t 
t 
u 
u 

私はしばらくとして名前をキャプチャしていないそれぞれの文字および/またはアンダーます私の正規表現については変更することができるものがあります....

答えて

1

a += ba.extend(b)のような働き反復可能なものに適用され、 bのすべての要素をaに追加します。

文字列を繰り返し使用できるため、+=を使用すると、Pythonは文字列の各要素を取得してリストに追加します。代わりに、result.append(matching.group(1))を使用してください。

+0

ありがとうございました。 – dl2257

+0

正常に機能した場合は、左側の✓をクリックして受け入れることを検討してください。 –

関連する問題