텍스트 파일을 반복문을 통해 가장 마지막 시뮬레이션 데이터 찾기
조회수 1001회
.txt 형식으로 저장한 시뮬레이션 데이터 파일을 불러들여 파이썬을 통해 가장 마지막으로 시뮬레이션 된 데이터를 찾아 추출을 해야하는데
f = open("/home/sjhyun960/바탕화면/4.txt", 'r') #텍스트 파일 불러와 읽기
textfile = f.read()
f.close()
파일을 읽어들인 후, 단순 문자열을 리스트 구조로 바꿔봤습니다.
TextList = textfile.splitlines() #리스트 구조로 변경
print("\n")
이 후에 find문과 반복문을 적절히 이용해서 아래의 텍스트 파일의 가장 마지막 데이터를 찾아야 하는데 여기서 막혔습니다.. 문자열을 통째로 읽어들이다 보니 데이터 하나하나를 뽑는 것도 문제네요.. 이용할 수 있는 기본 소스코드가 있을까요..??
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
탭으로 분리된 tsv 파일일 것 같은데요. csv, tsv 파일은 어렵게 텍스트파일 읽어서 파싱하지 마시고,
pandas read_csv
를 이용하세요.>>> import pandas as pd >>> from io import StringIO >>> t = '''10 3.3 2.2 7.7 11 33e7 2.1e3 1.333e-33 12 9.12e3 3.32e-11 1.111''' >>> df = pd.read_csv(StringIO(t), sep='\t', header=None) >>> df 0 1 2 3 0 10 3.3 2.200000e+00 7.700000e+00 1 11 330000000.0 2.100000e+03 1.333000e-33 2 12 9120.0 3.320000e-11 1.111000e+00 >>> df.iloc[-1] 0 1.200000e+01 1 9.120000e+03 2 3.320000e-11 3 1.111000e+00 Name: 2, dtype: float64 >>> a, b, c, d = df.iloc[-1] >>> a 12.0 >>> b 9120.0 >>> c 3.3200000000000006e-11 >>> d 1.111 >>>
- 탭으로 분리된 텍스트파일(tsv)이라면,
read_csv
의sep
인자를 탭문자로 주어서 읽으면 됩니다. - 읽은 내용은 테이블형태의 dataframe 이 됩니다. 데이터를 행, 열 별로 다루기 편합니다.
- 질문한 마지막 데이터는
df.iloc[-1]
처럼 해서 읽은 데이터의 마지막 row 를 확인하면 됩니다. - 예제의
StringIO(t)
부분만 읽을 파일명으로 주면 됩니다. (텍스트파일의 모양에 따라 인자가 약간 달라질 수 있는데, 컬럼명이 있다면, header=None 이 없어야 합니다.)
- 탭으로 분리된 텍스트파일(tsv)이라면,
-
namedtuple 를 이용해서 class에 매핑하세요.
line = "1111 2222 3333 4444" from collections import namedtuple myclass = namedtuple('myclass', ['field1', 'field2', 'field3', 'field4']) myclass(*line.split()) => myclass(field1='1111', field2='2222', field3='3333', field4='4444')
댓글 입력