내가 아는 json 모듈의 사용방식은, 다른파일을 불러오거나,읽을 때 사용됨
파일을 읽을수도, 수정도 가능함
나는 openpyxl , json 두가지 모듈을 이용해서 엑셀에 있는 데이터파일들을 딕셔너리 형태로 정리해볼것이다
엑셀 데이터 형식
(해당 데이터는 임의로 작성한것임)
내가 원하는 딕셔너리 형태
{이름 : 곽세신 생년월일 : 990626 주소 : 경북 ••• 1번지 },
import openpyxl
filename = "파일주소"
book = openpyxl.load_workbook(filename)
sheet = book.worksheets[0]
data = []
여기까지 해설을 하자면 >>>
book = openpyxl.load_workbook(filenmae)
해당엑셀파일을 book 이라는 파라미터(변수)로 저장(초기화)
sheet = book.worksheets[0]
해당엑셀파일 worksheets[시트번호]를 sheet에 저장
data = []
엑셀의 데이터를 담을곳
for row in sheet.rows:
data.append([
row[1].value,
row[2].value,
row[3].value,
])
반복문을 이용 row 는 엑셀의 '열'을 뜻함 엑셀에서의 1열은 파이썬에서는 0열이다
엑셀 데이터는 B열에서 시작되므로 row[1],row[2],row[3] 이런식으로 흘러간다
하면 데이터는 data에 저장됨
>>>
[['name', 'birth', 'address'],
['곽세신', 990626, '경북 상주시 외남면 흔평리 1번지'],
['양태예', 981223, '경북 상주시 외남면 흔평리 2번지'],
['황우경', 980525, '경북 상주시 외남면 흔평리 3번지'],
이런식으로 저장된다 이제 데이터를 딕셔너리 형태로 정리해보자
dict1 = []
for i in range(len(data):
dict1.append(({"이름":data[i][0],"주민번호":data[i][1],"주소지":data[i][2]}))
print(dict1)
>>>[{'이름': 'name', '주민번호': 'birth', '주소지': 'address'},
{'이름': '곽세신', '주민번호': 990626, '주소지': '경북 상주시 외남면 흔평리 1번지'},
{'이름': '양태예', '주민번호': 981223, '주소지': '경북 상주시 외남면 흔평리 2번지'},
해설
for i in range(len(data):
data의 길이 만큼 반복 (data의 길이는 대괄호안에 들어있는 게 1로 카운트됨
dict1.append(({"이름":data[i][0],"주민번호":data[i][1],"주소지":data[i][2]}))
i는 해당데이터의 인덱싱 [0][1][2]는 i인덱싱의 인덱싱
딕셔너리 형태로 정리된 데이터들을 다른파일에 정리해뒀다가 필요할 때 불러와서 쓸 수 있다면 효율적일 것이다
import json
# 파일만들기
with open("파일이름".json","w") as f:
json.dump(dict1,f,indent="t" ensure_ascii=False)
# 파일불러오기
withe open("파일경로","r") as f:
data = json.load(f)
딕셔너리를 사용하는 것 보다 클래스를 사용하는 게 더 효율적이라고 하지만 아직 배우지않아서 다음시간에 배워서 응용해보도록 하겠다
감사합니다. 이런 정보를 나눠주셔서 좋아요.