[패스트캠퍼스 수강후기] 업무자동화강의 100% 환급 챌린지 8회차 미션

2021. 3. 10. 00:12카테고리 없음

패스트캠퍼스 6개월 치 업무를 하루 만에 끝내는 업무자동화 올인원 패키지 Online

 

 

학습강의

파일끼리 병합하기 - 2 (헤더분석,분리 데이터 스테킹, 헤더인덱싱)
파일끼리 병합하기 - 3 (코드 , 알고리즘 살펴보기)

디자인 자동화

 

https://bit.ly/3pIrVoN

 

6개월 치 업무를 하루 만에 끝내는 업무자동화 | 패스트캠퍼스

대한민국 직장인, 개인 사업자 여러분! 오늘도 귀찮은 반복 업무에 스트레스 받으셨나요? 6개월 치 업무를 하루 만에 끝낸 '카이스트 공익'이 여러분의 칼퇴를 도와 드립니다! 여러 정부기관과

www.fastcampus.co.kr

 

인덱싱 기능 활용하기

 

인덱싱을 활용하면 몇번째 위치에 숫자가 있는지 확인할 수 있다.

 

예제

 

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")