본문 바로가기
프로그램

[파이썬] 문제 : 여러 데이터가 있는 text 파일에서 데이터 추출하기(파싱)

by 오디세이99 2023. 5. 9.
728x90
반응형

0 0 0 0 NONE NONE과
-1
사이에 오는 숫자들을 data로 만듬

f = open('data08.txt',  'r')           # 파일 읽기
line = f.readlines()
f.close()

data = []                              # 최종 데이터를 담을 리스트 변수
find_flag = False                     # 처음 시작 문자열을 찾았다는 변수
row_tmp = []                           # 실제 데이터로 만들 여러 라인에서 각 라인 데이터를 보관 할 임시 리스트변수
for L in line:                        # 파일의 각 라인을 읽음
    tmp = []                           # 한 라인의 임시 리스트 변수
    # print(L) 
    if L.find("0	0	0	NONE") != -1:     # 이 라인에 이런 문자열이 있으면
        find_flag = True              # 찾았다고 표시
        row_tmp = []                   # 데이터로 할 임시 리스트 변수 초기화
    elif find_flag == True:           # 찾은 다음 라인부터 데이터로 취급
        # print('>>',L)
        if L.find("	-1") != -1:       # 이런 문자열을 찾으면 종료
            ss = ''                    # 데이터로 할 여러 라인을 리스트로  담겨져 있어서 이를 문자열로 만든 후 다시 리스트로 처리하기 위한 문자열 변수
            for r in row_tmp:         # 여러 라인의 데이터에서 각 라인의 [[],[]..]와 같이 되어 있어서 이를 풀기 위해서
                ss += ','.join(r)     # ,로 구분된 문자열로 만듬. 전체를 하나의 문자열로 합함.
            # print('>>', ss)
            data.append(ss.split(',')) # 문자열을 , 로 분리해서 data에 추가
            find_flag = False         # 다시 처음을 찾을 수 있도록 flag = False로 해줌
        tmp = L.split('\t')            # 데이터로 만들 한 라인의 tmp 임시 리스트 변수에 탭으로 분리해서 담음
        row_tmp.append(tmp)            # 한 줄 데이터에 추가 해둠

for i in range(len(data)):
    print(data[i])

data08.txt
0.00MB

728x90
반응형

댓글