Pythonの関数に関する質問


Pythonの関数にかんする質問です。文字列を抽出するプログラムを作成しています。  
そのなかでPythonの関数の基本を押さえていなかったため、躓いてしまいました。

環境  
Python3.5.2

[code]

    import re
    
    list1 = [
        '5/1:hogehoge町:hogehoge大会',
        '5/2:hogehoge町:hogehoge大会',
        '5/3:hogehoge町:hogehoge大会',
        '5/4:hogehoge町:hogehoge大会',
        '5/5:hogehoge町:hogehoge大会',
        ]
    
    def get_content(self,list1):
        for content in list1:
            pass
    
    def parse_content():
        pass
    
[/code]

list1に格納されているのは架空のイベントのリストです。  
get_content関数でリストから要素を1つずつ取得し、取得した要素はparse_content関数で正規表現などを使って解析したいです。  
正規表現は一通りできるのですが、Pythonの関数について基本を抑えていなかったようで、うまくプログラムを製作できません。  
理想通りに動かすにはどうすればいいのかご教授おねがいします。




要素を取り出すだけであれば、コメントにあるように組み込み関数のsplitとreplaceでできます。

[code]

    list1 = [
        '5/1:hogehoge町:hogehoge大会',
        '5/2:hogehoge町:hogehoge大会',
        '5/3:hogehoge町:hogehoge大会',
        '5/4:hogehoge町:hogehoge大会',
        '5/5:hogehoge町:hogehoge大会',
        ]
    
    
    
    def get_content(l):
        # 出力リストを初期化する
        li = list()
    
        for contest in l:
            # 「:」で分割
            date, city, name = contest.split(':')
    
            # 月と日を分割
            month, day = date.split('/')
    
            # 町名、大会名から「町」「大会」の文字を抜く
            city_sur = city.replace('町', '')
            name_sur = name.replace('大会', '')
    
            # 出力リストに要素を追加する
            li.append([month, day, city_sur, name_sur])
    
        return li
    
    
    get_content(list1)
    # =>
    # [['5', '1', 'hogehoge', 'hogehoge'],
    #  ['5', '2', 'hogehoge', 'hogehoge'],
    #  ['5', '3', 'hogehoge', 'hogehoge'],
    #  ['5', '4', 'hogehoge', 'hogehoge'],
    #  ['5', '5', 'hogehoge', 'hogehoge']]
    
[/code]

あとはリストの中身を解析すれば良いので、例えば開催町を集計するなどはcollections.Counterを使うと便利です。

[code]

    from collections import Counter
    
    parsed_list = get_content(list1)
    
    # 入れ子のリストからインデックス2個目の要素のみを抽出
    cities = [i[2] for i in parsed_list]  
    # =>
    # ['hogehoge', 'hogehoge', 'hogehoge', 'hogehoge', 'hogehoge']
    
    Counter(cities)
    # =>
    # Counter({'hogehoge': 5})
    
[/code]

