에 데이터를 저장하기 :어떻게 파일을 읽고 나는이 형식의 파일이있는 경우 목록
1 2 3 4 5
6 7 8 9 10
파일을 읽고 파이썬리스트로 각 숫자를 저장하는 올바른 방법은 무엇입니까?
type: list indices must be integers, not str.
에 데이터를 저장하기 :어떻게 파일을 읽고 나는이 형식의 파일이있는 경우 목록
1 2 3 4 5
6 7 8 9 10
파일을 읽고 파이썬리스트로 각 숫자를 저장하는 올바른 방법은 무엇입니까?
type: list indices must be integers, not str.
각 줄을 읽고 별도의 번호로 자리를 분리하는 split()
를 사용 :
x_table = []
for eachLine in filename_1:
#Set up temp variable
x_table.append([])
tmpStr = ''
#Loop through each character in the line
for char in eachLine:
#Check whether the char is a number
if char.isdigit():
tmpStr += char
elif char == ' ' and tmpStr != '':
x_table[eachLine].append(int(char))
나는이 오류가있어 당신이 원한다면 그 후
mat = []
for line in open('file.txt').readlines():
mat.append(line.split())
을, 당신은 확인할 수 있습니다 모든 행이 같은 수의 요소를 가지는 경우.
eachLine
은 문자열 (특히 문서의 줄)이므로 x_table
배열 배열의 인덱스로 사용할 수 없습니다. 당신이 제안 된 접근 엘리야와 함께 가고 싶은 경우에 당신이 요소를 치기 위해 지능형리스트를 사용할 수 있습니다 (아래 참조), 또는 :
x_table = []
idx = 0
for eachLine in filename_1:
# ...
x_table[idx].append(int(char))
idx += 1
편집 :
당신은 실행중인 수를 유지할 수 없는 번호 :
raw_mat = []
f = open('file.txt')
for line in f.readlines():
raw_mat.append(line.split())
f.close()
mat = []
for row in raw_mat:
mat.append([i for i in row if i.isdigit()])
당신이 작동이 기능을 처리하는 번호가 필요한 경우 : http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html 당신이 (데이터는 번호가 필요하면 효율적이다 numpy.ndarray으로로드 된 배열의-배열을 변경해야하지 않는 한 및 수학 처리) .
또 다른 해결책 : 당신은이 배열의-배열이 필요하고 당신이 당신의 핵심 코드를 변경하지 않으려면는, 각 요소가 ...에 ... 인덱스되지 않습니다주의 위치가 아니라 실제 요소입니다.
는 인덱스 위치 할 얻을 : 내가 들어, 열거 (filename_1)에 절 :그리고 filename_1이 문자열 인 경우 그렇다하더라도, 그것은 확인 아니다 있습니다. 거기에 파일 객체를 지정해야합니다 (iterable, line by line).
x_table.append([int(s) for s in eachLine.split()])
#eachLine.split() will break eachLine by whitespace-strings.
여기에 예외를 포착 기억 : 각 라인 (eachLine) 다음 코드를 x_table에 추가 할 수 있습니다 들어
.
전체 코드 : NumPy와 버전에
x_table = []
for eachLine in open(filename_1, "r"):
x_table.append([int(k) for k in eachLine.split()])
전체 코드는 :
import numpy
x_table = numpy.loadtxt(open(filename_1,"r").read())
모두 코드에서 예외를 포착해야합니다.의
x_table = []
for line in filename_1:
numbers = map(int, line.split(' '))
x_table.append(numbers)
촬영주의 :
당신은 정규 표현식을 사용할 수 있습니다. 이 예제는 십진수, 네거티브 및 텍스트 제외를 구문 분석합니다.
"""Contents of test.txt:
1 2 3.14 4 5 0 text
6 7 -8 9 10 -99.99
some other text
1.0 0.5
"""
import re
filename_1 = open("test.txt", 'r')
values = re.findall(r"-*\d+\.*\d*", filename_1.read())
print values
이렇게하면 목록이 반환됩니다. 그런 다음 값을 int 또는 float로 변환 할 수 있습니다.
간단한 :
file = open("myfile.dat", "r")
matrix = []
for line in file:
matrix.append(line.split()[:])