2014-02-18 1 views

답변

0

각 줄을 읽고 별도의 번호로 자리를 분리하는 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()) 

을, 당신은 확인할 수 있습니다 모든 행이 같은 수의 요소를 가지는 경우.

0

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()]) 
0

당신이 작동이 기능을 처리하는 번호가 필요한 경우 : 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()) 

모두 코드에서 예외를 포착해야합니다.의

0
x_table = [] 
for line in filename_1: 
    numbers = map(int, line.split(' ')) 
    x_table.append(numbers) 

촬영주의 :

  • 멀티 자리 숫자
  • 음수 (마이너스 기호)
0

당신은 정규 표현식을 사용할 수 있습니다. 이 예제는 십진수, 네거티브 및 텍스트 제외를 구문 분석합니다.

"""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로 변환 할 수 있습니다.

0

간단한 :

file = open("myfile.dat", "r") 

matrix = [] 
for line in file: 
    matrix.append(line.split()[:]) 
관련 문제