Skip to content
Jae-Hwan edited this page Nov 30, 2021 · 5 revisions

누락된 투수 자료 넣기

아래와 같은 형식으로 자료를 넣는다.

home_pitchers = """
투수명,이닝,피안타,실점,자책,4사구,삼진,피홈런,타자,타수,투구수,경기,승리,패전,세이브,평균자책
송승준,6,9,2,2,3,3,0,29,26,94,1,0,0,0,3.00
김이슬,0 ⅓,0,0,0,0,0,0,1,1,6,1,0,0,0,0.00
이정민,0 ⅔,0,0,0,0,0,0,1,1,1,1,1,0,0,0.00
강영식,1,0,0,0,0,2,0,3,3,10,1,0,0,0,0.00
애킨스,1,0,0,0,0,0,0,3,3,13,1,0,0,1,0.00
"""

home_pitchers_patch = {
    "송승준": {"등판": "선발"},
    "이정민": {"결과": "승"},
    "강영식": {"결과": "홀드"},
    "애킨스": {"결과": "세"},
    "팀": "롯데",
}

아래 함수를 이용한다.

def changing_naver_pitchers_txt_to_csv(pitchers):
    pitchers_list = []
    reader = csv.reader(pitchers.split('\n'), delimiter=',')
    for row in reader:
        pitchers_list.append(row)
    return pitchers_list

def changing_naver_pitchers_col_name(pitchers_text):
    # 아래 첫번째 줄 코드는 트릭이다. 저장할 때 보기 좋게 하기 위해서
    # 아래위로 엔터를 넣는데 그걸 제거하는 것이다. 
    temp_pitchers = pitchers_text[1:-1]
    temp_pitchers = temp_pitchers.replace("투수명","선수명")
    temp_pitchers = temp_pitchers.replace("승리","승")
    temp_pitchers = temp_pitchers.replace("패전","패")
    temp_pitchers = temp_pitchers.replace("세이브","세")
    temp_pitchers = temp_pitchers.replace("피홈런","홈런")
    temp_pitchers = temp_pitchers.replace("평균자책","평균자책점")
    
    return temp_pitchers

def changing_naver_pitchers_csv_to_json(pitchers_list, pitchers_patch):
    total_pitchers_list = []

    for pitcher in pitchers_list[1:]:
        i = 0
        temp_data = {}
        for item in pitcher:
            temp_data['팀'] = pitchers_patch['팀']
            temp_data[pitchers_list[0][i]] = item
            i = i + 1
        if temp_data['선수명'] in pitchers_patch.keys():
            if len(pitchers_patch[temp_data['선수명']]) == 2:
                temp_data['등판'] = pitchers_patch[temp_data['선수명']]['등판']
                temp_data['결과'] = pitchers_patch[temp_data['선수명']]['결과']
            else:
                if '등판' in pitchers_patch[temp_data['선수명']]:
                    temp_data['등판'] = pitchers_patch[temp_data['선수명']]['등판']
                    temp_data['결과'] = 0
                else:
                    temp_data['등판'] = 0
                    temp_data['결과'] = pitchers_patch[temp_data['선수명']]['결과']
        total_pitchers_list.append(temp_data)
    return total_pitchers_list

작동법

def pitchers_data():
    temp = changing_naver_pitchers_col_name(home_pitchers)
    temp = changing_naver_pitchers_txt_to_csv(temp)
    temp = changing_naver_pitchers_csv_to_json(temp, home_pitchers_patch)
    print(temp)

결과

[
    {
        "팀": "롯데",
        "선수명": "송승준",
        "이닝": "6",
        "피안타": "9",
        "실점": "2",
        "자책": "2",
        "4사구": "3",
        "삼진": "3",
        "홈런": "0",
        "타자": "29",
        "타수": "26",
        "투구수": "94",
        "경기": "1",
        "승": "0",
        "패": "0",
        "세": "0",
        "평균자책점": "3.00",
        "등판": "선발",
        "결과": 0,
    },
    {
        "팀": "롯데",
        "선수명": "김이슬",
        "이닝": "0 ⅓",
        "피안타": "0",
        "실점": "0",
        "자책": "0",
        "4사구": "0",
        "삼진": "0",
        "홈런": "0",
        "타자": "1",
        "타수": "1",
        "투구수": "6",
        "경기": "1",
        "승": "0",
        "패": "0",
        "세": "0",
        "평균자책점": "0.00",
    },
    {
        "팀": "롯데",
        "선수명": "이정민",
        "이닝": "0 ⅔",
        "피안타": "0",
        "실점": "0",
        "자책": "0",
        "4사구": "0",
        "삼진": "0",
        "홈런": "0",
        "타자": "1",
        "타수": "1",
        "투구수": "1",
        "경기": "1",
        "승": "1",
        "패": "0",
        "세": "0",
        "평균자책점": "0.00",
        "등판": 0,
        "결과": "",
    },
    {
        "팀": "롯데",
        "선수명": "강영식",
        "이닝": "1",
        "피안타": "0",
        "실점": "0",
        "자책": "0",
        "4사구": "0",
        "삼진": "2",
        "홈런": "0",
        "타자": "3",
        "타수": "3",
        "투구수": "10",
        "경기": "1",
        "승": "0",
        "패": "0",
        "세": "0",
        "평균자책점": "0.00",
        "등판": 0,
        "결과": "홀드",
    },
    {
        "팀": "롯데",
        "선수명": "애킨스",
        "이닝": "1",
        "피안타": "0",
        "실점": "0",
        "자책": "0",
        "4사구": "0",
        "삼진": "0",
        "홈런": "0",
        "타자": "3",
        "타수": "3",
        "투구수": "13",
        "경기": "1",
        "승": "0",
        "패": "0",
        "세": "1",
        "평균자책점": "0.00",
        "등판": 0,
        "결과": "",
    },
]

Clone this wiki locally