2016-12-01 1 views
0

나는 파일이 내 생각은 정규식을 사용하는 것이었다 파이썬 코드에 대해서는이불규칙하게 포맷 된 파일을 읽는 방법?

9 0.0351562 0.0713449 -11.4664 -25.9366 -27.955 4 2.38188 
10 0.0390625 0.0507383 -12.9466 -30.2437 -29.1045 4 0.616179 
11 0.0429688 0.0629145 -12.0125 -37.1503 -32.2795 4 0.569045 
12 0.046875 0.046937 -13.2848 -31.9606 -32.5367 4 0.128286 
13 0.0507812 0.0541174 -12.6666 -30.7398 -27.4705 4 1.38345 

같은 형식이있다.

for line in s.splitlines(): 
    lst = [i.strip() for j in re.findall(regex, line) for i in j if j] 
    print(lst) 

하지만 정규식은 어떻게 보이나요?

파일을 작성한 C 코드 라인 :

fprintf(inf, "%d %g %g %g %g %g %g %g\n", i,frq1, 
     spec[i],dbspec, naive_spec[i], dtemp[i], 
     dof[i], Fvalues[i]); 

I 라인 8 개 변수 1 개, 정수 및 파이썬 구문의 7 배가있다.

답변

2
with open('path/to/file') as infile: 
    for line in infie: 
     nums = [float(i) for i in line.split()] 
     # do stuff with nums 
1

모든 공백으로 구분 된 값이므로 정규식을 사용하지 않습니다. 다음은 split() 문자열 방법을 사용하는 방법입니다.

kinds = [int] + [float]*7 # types expected 
with open('uneven.txt') as file: 
    for line in file: 
     row = map(lambda v: v[0](v[1]), zip(kinds, line.split())) 
     print(row)