텍스트 파일을 읽어와서 내림차순 혹은 오름차순으로 정리하고 다시 파일로 출력
조회수 2084회
9 김철수 72
10 박재용 79
1 나영희 34
3 이나연 46
이런식으로 되어있는 텍스트파일(학번, 이름, 성적)을 읽어와서 학번을 기준으로 내림차순이나 오름차순으로 정리한다음에 다시 파일로 출력 해야하는데욥 어떻게 해야할까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
해당 파일이 엄격한 형식을 따르는 flat 파일이아니라, 느슨한 형식의 파일이라면 정규표현식을 써야할겁니다... 다행히도, ' '문자와, '\n'줄 바꿈 문자로 구분이 되는 '학번','이름','성적'\n 의 파일이네요...
#text.txt 9 김철수 72 10 박재용 79 1 나영희 34 3 이나연 46 filename = 'text.txt' f = open(filename,'r', encoding='utf-8') counter = 0 subCounter = 0 studentNumber = '' studentName = '' studentGrade = '' studentList = [] while(True): try: temp = f.readline() if temp == '': raise for i in temp: if i == ' ' and subCounter == 0: studentNumber = temp[:counter] temp = temp[counter+1:] counter = 0 subCounter += 1 continue if i == ' ' and subCounter == 1: if temp[-1] == '\n': temp = temp[:-1] studentName = temp[:counter] studentGrade = temp[counter+1:] temp = '' counter = 0 subCounter = 0 studentList.append([studentNumber,studentName,studentGrade]) break counter+=1 except: f.close() break def sortKey(x): return int(x[0]) studentList.sort(key=sortKey) #스튜던트 저장... filename2 = 'save.txt' f2 = open(filename2, 'w', encoding='utf-8') subCounter2 = 0 for student in studentList: for i in student: if subCounter2 == 0: f2.write(str(i)+' ') subCounter2 +=1 continue if subCounter2 == 1: f2.write(str(i)+' ') subCounter2 +=1 continue if subCounter2 == 2: f2.write(str(i)+'\n') subCounter2 =0 continue f2.close()
Python의 코드로는 위와같이 짜지네요..
댓글 입력