[PYTHON] 파이썬으로 목록이나 배열로 텍스트 파일을 읽는 법
PYTHON파이썬으로 목록이나 배열로 텍스트 파일을 읽는 법
텍스트 파일의 줄을 파이썬의 목록이나 배열로 읽으려고합니다. 목록이나 배열을 만든 후에 개별적으로 항목에 액세스 할 수 있어야합니다.
텍스트 파일의 형식은 다음과 같습니다.
0,0,200,0,53,1,0,255,...,0.
The ...이 위의 경우, 실제 텍스트 파일에는 수백 또는 수천 개의 항목이 더 있습니다.
다음 코드를 사용하여 파일을 목록으로 읽으려고합니다.
text_file = open("filename.dat", "r")
lines = text_file.readlines()
print lines
print len(lines)
text_file.close()
얻을 출력은 다음과 같습니다.
['0,0,200,0,53,1,0,255,...,0.']
1
분명히 개별 파일 목록이 아닌 단지 하나의 항목 목록으로 전체 파일을 읽는 것입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
해결법
-
==============================
1.split ()을 사용하여 문자열을 값 목록으로 분할해야합니다.
split ()을 사용하여 문자열을 값 목록으로 분할해야합니다.
그래서,
lines = text_file.read().split(',')
-
==============================
2.python file.readLines () 메서드는 파일의 행 목록을 반환합니다.
python file.readLines () 메서드는 파일의 행 목록을 반환합니다.
f = open('file_name.ext', 'r') x = f.readlines() f.close()
이제 x의 배열을 반복 할 수 있어야합니다.
파일을 사용하고 나중에 닫아야한다는 것을 기억하지 않으려면 다음과 같이하십시오.
with open('file_name.ext', 'r') as f: x = f.readlines()
-
==============================
3.numpy loadtxt를 다음과 같이 사용할 수도 있습니다.
numpy loadtxt를 다음과 같이 사용할 수도 있습니다.
from numpy import loadtxt lines = loadtxt("filename.dat", comments="#", delimiter=",", unpack=False)
-
==============================
4.목록의 목록을 만들고 싶습니다 ... 빈 목록으로 시작해야합니다.
목록의 목록을 만들고 싶습니다 ... 빈 목록으로 시작해야합니다.
list_of_lists = []
다음으로 파일 내용을 한 줄씩 읽습니다.
with open('data') as f: for line in f: inner_list = [elt.strip() for elt in line.split(',')] # in alternative, if you need to use the file content as numbers # inner_list = [int(elt.strip()) for elt in line.split(',')] list_of_lists.append(inner_list)
일반적인 사용 사례는 기둥 형 데이터의 경우이지만 저장소의 단위는 우리가 하나씩 읽은 파일의 행, 그래서 당신은 전치하고자 할 수 있습니다 목록의 목록. 이것은 다음 관용구를 사용하여 수행 할 수 있습니다.
by_cols = zip(*list_of_lists)
또 다른 일반적인 용도는 각 열에 이름을 지정하는 것입니다
col_names = ('apples sold', 'pears sold', 'apples revenue', 'pears revenue') by_names = {} for i, col_name in enumerate(col_names): by_names[col_name] = by_cols[i]
균질 데이터 항목을 조작 할 수 있습니다.
mean_apple_prices = [money/fruits for money, fruits in zip(by_names['apples revenue'], by_names['apples_sold'])]
필자가 작성한 대부분은 표준 라이브러리의 csv 모듈을 사용하여 속도를 높일 수 있습니다. 또 다른 타사 모듈은 판다 (pandas)로, 일반적인 데이터 분석의 대부분의 측면을 자동화 할 수 있습니다 (그러나 많은 의존성이 있습니다).
업데이트 Python 2에서 zip (* list_of_lists)은 목록의 다른 목록을 반환하지만 Python 3에서는 zip (* list_of_lists)가 subscriptable이 아닌 zip 객체를 반환합니다.
인덱싱 된 액세스가 필요한 경우 사용할 수 있습니다.
by_cols = list(zip(*list_of_lists))
두 버전의 Python에서 모두리스트를 얻을 수 있습니다.
반면에 인덱스 된 액세스가 필요하지 않고 원하는 항목이 열 이름으로 인덱싱 된 사전을 작성하는 것만으로도 zip 객체가 좋습니다 ...
file = open('some_data.csv') names = get_names(next(file)) columns = zip(*((x.strip() for x in line.split(',')) for line in file))) d = {} for name, column in zip(names, columns): d[name] = column
-
==============================
5.이 질문은 쉼표로 구분 된 값의 내용을 파일에서 반복 가능한 목록으로 읽는 방법을 묻습니다.
이 질문은 쉼표로 구분 된 값의 내용을 파일에서 반복 가능한 목록으로 읽는 방법을 묻습니다.
0,0,200,0,53,1,0,255,...,0.
이렇게하는 가장 쉬운 방법은 다음과 같은 csv 모듈을 사용하는 것입니다.
import csv with open('filename.dat', newline='') as csvfile: spamreader = csv.reader(csvfile, delimiter=',')
이제 다음과 같이 스팸 판독기를 쉽게 반복 할 수 있습니다.
for row in spamreader: print(', '.join(row))
자세한 예제는 설명서를 참조하십시오.
-
==============================
6.
with open('D:\python\positive.txt', 'r') as myfile: data=myfile.read().replace('\n', '')
from https://stackoverflow.com/questions/14676265/how-to-read-a-text-file-into-a-list-or-an-array-with-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 목록의 중간 값 찾기 (0) | 2018.10.04 |
---|---|
[PYTHON] 파이썬 HTTP 연결에 인증 된 프록시를 지정하는 방법은 무엇입니까? (0) | 2018.10.04 |
[PYTHON] 파이썬 또는 ipython 인터프리터를 입력 할 때 모듈을 자동으로 가져옵니다. (0) | 2018.10.03 |
[PYTHON] 파이썬에서 round ()가 제대로 반올림되지 않는 것 같습니다. (0) | 2018.10.03 |
[PYTHON] 파이썬에서 문자열의 반복 된 문자 계산하기 (0) | 2018.10.03 |