python csv 파일을 읽고 사용자 입력을 받아 입력에 해당하는 카운트를 증가시켜 저장하는 방법

조회수 449회

식당 이름을 입력받아서 ranking.csv 파일이 존재하고, 입력 받은 식당 이름이 ranking.csv 파일 내에 있을 때 행을 추가하지 않고 기존 식당 이름에 count를 +1하여 csv에 write하고 싶은데 방법을 모르겠어요. 도와주세요.

    rest_name = str(input())
    count = 1

    file_exist = os.path.exists('ranking.csv')
    if rest_name:
        if not file_exist:
            with open('ranking.csv', 'w') as csv_file:
                fieldnames = ['NAME', 'COUNT']
                writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
                writer.writeheader()

        elif file_exist:
            # 파일 존재
            with open('ranking.csv', 'r') as csv_file:
                fieldnames = ['NAME', 'COUNT']
                reader = csv.DictReader(csv_file, fieldnames=fieldnames)
                for row in reader:
                    if rest_name == row:
                        with open('ranking.csv', 'a') as csv_file2:
                            writer = csv.DictWriter(csv_file2, fieldnames=fieldnames)
                            writer.writerow({'NAME': 5, 'COUNT': 5})

                else:
                    with open('ranking.csv', 'a') as csv_file:
                        fieldnames = ['NAME', 'COUNT']
                        writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
                        writer.writerow({'NAME': rest_name, 'COUNT': count})

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    >>> import pandas as pd
    >>> with open("ranking.csv", "w", encoding="utf-8") as f:
        f.write("""NAME,COUNT
    옥류관,111
    만리장성,1
    닭도날드,23""")
    
    
    33
    >>> rest = input("당신의 최애식당은? :")
    당신의 최애식당은? :닭도날드
    >>> 
    >>> df_rank = pd.read_csv("ranking.csv", encoding="utf-8")
    >>> df_rank
       NAME  COUNT
    0   옥류관    111
    1  만리장성      1
    2  닭도날드     23
    >>> if rest in list(df_rank.NAME):
        df_rank.loc[df_rank["NAME"] == rest, "COUNT"] += 1
    else:
        df_rank.loc[len(df_rank)] = [ rest, 1 ]
    
    
    >>> df_rank
       NAME  COUNT
    0   옥류관    111
    1  만리장성      1
    2  닭도날드     24
    >>> # 닭도날드가 하나 증가했음.
    >>> rest = input("당신의 최애식당은? :")
    당신의 최애식당은? :버거왕
    >>> if rest in list(df_rank.NAME):
        df_rank.loc[df_rank["NAME"] == rest, "COUNT"] += 1
    else:
        df_rank.loc[len(df_rank)] = [ rest, 1 ]
    
    
    >>> df_rank
       NAME  COUNT
    0   옥류관    111
    1  만리장성      1
    2  닭도날드     24
    3   버거왕      1
    >>> df_rank.to_csv("ranking.csv", encoding="utf-8", index=False)
    >>> df_rank = pd.read_csv("ranking.csv", encoding="utf-8")
    >>> df_rank
       NAME  COUNT
    0   옥류관    111
    1  만리장성      1
    2  닭도날드     24
    3   버거왕      1
    >>> 
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)