64022


Python3系でinputで入力した内容とその各回答ごとの出現数をカウントして同時にCSVファイルに出力したいです。  
CSVに入力値の出力まではできたのですが、それをどうカウントするかで詰まってます。  
基礎的なPythonの文法だとは思うのですが、forなどでロジックを構築する技術が足りずご教授願えると大変嬉しいです。

【理想の出力】  
NAME COUNT  
回答 数

[code]

    import codecs
    
    print("Hi!I'm Roboko.What is your name ?")
    name = input("")
    
    d = {}
    favor_res = input("Hey!{}!,Which restaurants do you prefer?\n".format(name))
    if favor_res in d:
        d[favor_res] = d[favor_res] + 1
    else:
        d[favor_res] = 1
    
    file0 = codecs.open("/Users/apple/Downloads/practice.csv", "w", encoding="utf-8")
    file0.write("NAME\tCOUNT\n")
    file0.write(favor_res)
    print("Thank you,{}!".format(name))
    
[/code]


CC BY-SA 4.0
2020-03-22T03:52:28.177
64020
2020-03-22T07:18:49.773
2020-03-22T07:18:49.773
34463
question
python3
Pythonで特定条件の結果をCSVファイルに出力したい


複数の回答を処理するとの事なのでループ構造を入れています(`while True: 〜`)。また、回答が無いか、空白文字類だけの場合は「無回答」をキーにして
dict(辞書)に登録しています。  
質問欄にあるコードでは集計結果を `TSV(Tab Separated Values)`形式で記録しているので、回答文字列内の TAB
コード(`0x09`)を `_`(アンダースコア)に変換しています(回答文字列全体を`"`(ダブルクォート)で囲んでも良いかもしれません)。

**practice.py**

[code]

    import sys
    
    ## Greeting message
    try:
        name = input("Hi! I'm Roboko. What is your name? ")
    except EOFError as e:
        print(e, file=sys.stderr)
        sys.exit(1)
    
    ## Aggregation
    d = {}
    while True:
        try:
            favor_res = input(f"Hey! {name}!, Which restaurants do you prefer?\n")
        except EOFError:
            break
    
        favor_res = favor_res.strip()
        if favor_res == "":
            favor_res = "無回答"
            ## `continue' when ignore no answer
            # continue
        else:
            favor_res.replace("\t", "_")
    
        if favor_res in d:
            d[favor_res] += 1
        else:
            d[favor_res] = 1
    
    ## Write out the result with TSV format
    try:
        with open("/Users/apple/Downloads/practice.csv", "w", encoding="utf-8") as f:
            f.write("NAME\tCOUNT\n")
            for k, v in d.items():
                f.write(f"{k}\t{v}\n")
        print(f"Thank you, {name}!")
    except IOError as e:
        print(e, file=sys.stderr)
    
[/code]

**テストデータによる実行**

[code]

    $ cat <<EOF | python3 practice.py
    test
    松屋
    吉野家
    やよい軒
    
    富士そば
    ココイチカレー
    近所のレストラン
    
    コンビニのイートイン
    富士そば
    EOF
    
[/code]

**実行結果(practice.csv)**

[code]

    NAME    COUNT
    松屋  1
    吉野家 1
    やよい軒    1
    無回答 2
    富士そば    2
    ココイチカレー 1
    近所のレストラン    1
    コンビニのイートイン  1
    
[/code]


CC BY-SA 4.0
2020-03-22T07:17:56.557
64022
2020-03-22T07:17:56.557
64020
answer