2013-11-23 1 views
0

는 파이썬 상당히 새로운 오전 나는이 같은 출력 수레의 목록을 할 수있는 C 프로그램을 가지고 :어떻게 파이썬에서 수레 목록 목록을 구문 분석 할 수 있습니까?

f11 
f12 
... 
f1n 

f21 
f22 
... 
f2m 

. 
. 
. 
fk1 
... 
fkl 

나는리스트의 목록에이 수레를 좀하고 싶습니다 :

[[f11,...], [f21, ...], ..., [fk1,...]] 

필자는 (특정 부동 소수점을 구분 기호로 사용하는) 솔루션을 가지고 있지만 꽤 못생긴다. 입력 형식은 유연합니다 ... 간단한 해결책이 있습니까?

+0

입력에있는 타원과 점이 실제로 가져 오는 내용입니까, 아니면 이것을 자리 표시 자로 포함하고 있습니까? 부동 소수점 숫자의 "집합"사이에 항상 개행 문자가 두 개 있습니까? – Michael0x2a

+0

이것은 자리 표시 자입니다 (비록 그것이 무엇을 의미하는지는 잘 모르겠지만) : 이것은 수레의 긴 목록이므로 목록이 "..."으로 표시된다는 것을 나타냅니다. 내가 말했듯이, 나는 원하는대로 데이터를 출력 할 수있다. 나는 빈 줄을 넣었지만 뭔가 다른 것이 될 수있다. – matovitch

+1

그는 우리가 다음에서 수레의 한 하위 목록을 구분하는 것을 어떻게 알아야하는지 묻습니다. 그 (것)들 사이 빈 줄이, 또는 ... – roippi

답변

2

가정 당신의 번호는 다음과 같이 보일 :

def parse_group(group): 
    return [float(n) for n in group.split('\n')] 

def get_numbers(string, separator='\n\n'): 
    groups = str.split(separator) 
    return [parse_group(group) for group in groups] 

가에 get_numbers 호출 : 숫자의 각 그룹이 두 줄 바꿈으로 구분

1.435235 
3.23421 
4.523421 
42.3241 

-1.2342 
0.09901 
134134.2 

1.2342111 
13.111 
14.23521 

이 ..., 당신이 뭔가를 할 수 함수는 다음과 같이 나타낼 수 있습니다.

>>> print get_numbers(input) 
[[1.435235, 3.23421, 4.523421, 42.3241], [-1.2342, 0.09901, 134134.2], [1.2342111, 13.111, 14.23521]] 

각 그룹은 두 개의 개행 문자 (공백 행)로 구분되지만, 그에 따라 매개 변수화 할 수 있습니다.

관련 문제