2013-03-26 3 views
1

파일을 토큰 화하기 위해 파일의 공백 부분을 뱉어 내고 줄 바꿈을 무시하는 제너레이터가 있습니다. 이제누적 생성기

def parts(filename): 
    file = open(filename, 'r') 
    for line in file: 
    for part in line.split(): 
     yield part 

, 내가 쓰고 싶은 그 발전기의 이해로 - 무엇을 작동하지 않았다 것은 :

p = (part for part in line.split() for line in file) 

또는

p = (part for part in (line.split() for line in file)) 

후자는 스플릿 라인을 뱉어 스플릿 라인 부분 대신

+1

나는 – georg

+1

아니, 후자는 또한 패드 발전기에 사람들을 도울 수 – Eric

답변

6

다음 구문을 사용하십시오.

p = (part for line in file for part in line.split()) 

생성자 표현식에서 가장 바깥 쪽 for 루프는 왼쪽 표현식입니다.

+2

하나는, 루프 구문 오류입니다) "whitespaceseparated"는 모순 어법을 좋아한다 루프가 어떻게 작동하는지 보여주기 위해 다른 라인에서 표현. – georg

+0

보통 사람과 같은 순서로 작성되어 이해에 – jamylak

1
(word for line in input_file for word in line.split()) 
+1

word가 가변적 인 이름 임 – Hoffmann