2021. 3. 10. 00:12ㆍ카테고리 없음
패스트캠퍼스 6개월 치 업무를 하루 만에 끝내는 업무자동화 올인원 패키지 Online
학습강의
파일끼리 병합하기 - 2 (헤더분석,분리 데이터 스테킹, 헤더인덱싱)
파일끼리 병합하기 - 3 (코드 , 알고리즘 살펴보기)
디자인 자동화
인덱싱 기능 활용하기
인덱싱을 활용하면 몇번째 위치에 숫자가 있는지 확인할 수 있다.
예제
In [1]: a = [1, 2, 3, 4, 5, 6, 7]
In [2]: a
Out[2]: [1, 2, 3, 4, 5, 6, 7]
In [3]: a.index(4)
Out[3]: 3
인덱싱을 통한 헤더 분리하기
예제
In [15]: a = [["이름", "나이", "이메일"],
...: ["반병현", "28", "asdgg@naver.com"]]
In [16]: a[0]
Out[16]: ['이름', '나이', '이메일']
In [17]: a[1]
Out[17]: ['반병현', '28', 'asdgg@naver.com']
커테이션 두개를 활용해 두개에 목록으로 분류하고 인덱싱을 사용해 해당 변수를 가져온다
헤더 분리 예제
In [1]: HEADERS = []
In [2]: CONTENTS = []
분리할 값
In [3]: A = [[1, 2, 3], ["D1", "D2", "D3"]]
In [4]: B = [[1, 2, 3, 4], ["DF", "DG", "DH", "DL"]]
In [5]: A_ = [[1, 2, 3], ["DQ", "DW", "DE"]]
In [6]: B_ = [[1, 2, 3, 4], ["DC", "DV", "DB", "DN"]]
In [7]: A
Out[7]: [[1, 2, 3], ['D1', 'D2', 'D3']]
In [8]: B
Out[8]: [[1, 2, 3, 4], ['DF', 'DG', 'DH', 'DL']]
In [9]: A_
Out[9]: [[1, 2, 3], ['DQ', 'DW', 'DE']]
In [10]: B_
Out[10]: [[1, 2, 3, 4], ['DC', 'DV', 'DB', 'DN']]
In [11]: A[0]
Out[11]: [1, 2, 3]
In [13]: A[1:]
Out[13]: [['D1', 'D2', 'D3']]
In [15]: HEADERS.append(A[0])
In [17]: CONTENTS.append([A[0]])
In [19]: HEADERS.append(B[0])
In [20]: CONTENTS.append([B[0]])
비어있는 헤더 값과 컨테츠 값에 어펜더를 사용해 분리할 값을 기록한다
In [21]: HEADERS
Out[21]: [[1, 2, 3], [1, 2, 3, 4]]
In [21]: CONTENTS
Out[21]: [[[1, 2, 3], [1, 2, 3, 4]]]
헤더 값은 분리할 목적으로 사용하고 컨테츠 값에 기록한다
In [29]: HEADERS.index(A[0])
Out[29]: 0
In [30]: CONTENTS[0] +=A[1:]
In [31]: CONTENTS[0]
Out[31]: [[1, 2, 3], ['D1', 'D2', 'D3']]
In [31]: B[0] in HEADERS
Out[31]: True
헤더 값에 B[0] 값이 있는지 체크한다
In [32]: HEADERS.index(B[0])
Out[32]: 1
헤더 값에 B[0]값이 몇번째에 있는지 확인한다
In [33]: CONTENTS[1]
Out[33]: [[1, 2, 3, 4]]
In [34]: CONTENTS[1] += B[1:]
B[0] 값이 컨텐츠 1에 B: 슬라이싱 뒷부분을 추가하여 분리한다
In [35]: CONTENTS
Out[35]: [[[1, 2, 3], ['D1', 'D2', 'D3']], [[1, 2, 3, 4], ['DF', 'DG', 'DH',
'DL']]]
In [36]: A_
Out[36]: [[1, 2, 3], ['DQ', 'DW', 'DE']]
In [37]: B_
Out[37]: [[1, 2, 3, 4], ['DC', 'DV', 'DB', 'DN']]
In [38]: A_[0] in HEADERS
Out[38]: True
In [40]: HEADERS.index(A_[0])
Out[40]: 0
In [41]: CONTENTS[0] += A_[1:]
In [42]: CONTENTS[0]
Out[42]: [[1, 2, 3], ['D1', 'D2', 'D3'], ['DQ', 'DW', 'DE']]
In [43]: B_[0] in HEADERS
Out[43]: True
In [44]: HEADERS.index(B_[0])
Out[44]: 1
In [45]: CONTENTS[1] += B_[1:]
윗에서 한 작업을 반복하면 해당 값별로 컨텐츠 값이 분리된다
In [46]: CONTENTS[1]
Out[46]: [[1, 2, 3, 4], ['DF', 'DG', 'DH', 'DL'], ['DC', 'DV', 'DB', 'DN']]
In [48]: CONTENTS[0]
Out[48]: [[1, 2, 3], ['D1', 'D2', 'D3'], ['DQ', 'DW', 'DE']]
리스트 형태로 겟 어웨이 활용해 리스트로 불러올 수 있다
In [3]: import pyexcel as px
파일 엑셀 모듈을 연다
In [4]: a = px.get_array(file_name="5_최현원.xlsx")
겟 어웨이를 통해 해당 파일에 값을 불러와 a에 넣는다
In [6]: a
Out[6]:
[['name', 'age', 'e-mail', 'division', 'telephone', 'sex', 'telephone'],
['최현원',
'95',
'ivfc199a@bhban.com',
'0y1',
'010-8195-1981',
'male',
'010-8195-1981']]
실제 적용 코드
if header not in HEADERS:
# 처음 발견된 헤더라면 기록해 둡니다.
HEADERS.append(header)
# 출력할 파일 템플릿 리스트를 제작하여 저장해 둡니다.
CONTENTS.append([header])
# 저장할 파일 리스트를 불러옵니다.
index = HEADERS.index(header)
# 리스트에 데이터 값을 입력합니다.
CONTENTS[index] += content
파일 저장
for i in range(len(CONTENTS)):
px.save_as(array=CONTENTS[i], dest_file_name=out_dir + "/" + str(i) + "_merged_File.xlsx")