2014-11-27 4 views
-3

제가 작업하고있는 문제에 봉착했습니다.Python - 파일에서 여러 줄의 텍스트 구문 분석

줄을 읽는 파일을 열고 파일의 다음 두 줄을 파일과 비교합니다. 그런 다음 한 줄 아래로 이동하십시오 (예 : 파일의 두 번째 줄). 다음 두 줄을 다시 비교하십시오.

이러한 단계를 수행하는 루프를 만드는 데 어려움을 겪고 있습니다.

은 지금까지 나는이

write_file = input_file[:-3] + "bak" 
read_file = input_file 

with open(write_file, "w") as write: 
    with open(read_file,"r") as read: 
     for line in read: 
      line1 = line 

당신을 감사 했어요. 같은

+2

입니다. 게시하기 전에 도움말 : http://stackoverflow.com/help/on-topic을 읽으십시오. 그렇지 않으면 투표가 종료됩니다. –

+0

사용자는 연구 노력이 표시되지 않은 모든 질문에 대해 투표를해야합니다. "파이썬에서 루핑 (looping in python)"을 찾거나 파이썬 사이트에서 기본 튜토리얼을 해봤습니까? –

답변

1

뭔가 :

tri_lines = [lines[i:i+3] for i in range(0,len(lines),3)] 

#Then you can iterate through: 

For triplet in tri_lines: 
    # your code here, compare tri_lines[0] with tri_lines[1] etc. 

내가 당신에게 목록에 파일의 모든 행을 가져 오는 작업을 떠날거야. 파일이 3

로 나눌 라인의 번호를 가지고 있지 않는 경우는 경우를 처리하기 위해 몇 가지 간단한 검증을 수행해야합니다

노트 당신도이 있지만

for triplet in [lines[i:i+3] for i in range(0,len(lines),3)]: 
    if triplet[0] == triplet[1]: 
     #do something 
    if triplet[0] == triplet[2]: 
     #do something 

을 수행 할 수 있습니다

+0

감사합니다. 이것은 정확히 내가 한 것입니다 :) – Vlad

1

@Matt Coubrough와 마찬가지로, 이것은 QnA 포럼이 아닙니다. 누군가가 당신을 위해 당신의 질문을 해결할 것으로 기대하기 전에 여기에 오기 전에 스스로 문제를 해결하려고 노력해야합니다. 바른 길에 당신을 얻을 수있는 노력의 일환으로

, 여기이 질문과 대답 사이트없는 일반 튜토리얼, 예 및 팁 사이트 일부 의사

//NOTE: This pseudocode assumes there are atleast 3 lines in the file 
line1 = file.getLine() 
line2 = file.getLine() 
line3 = file.getLine() 
//compare line1, line2, and line3 

while(fileIsNotEmpty) { 
    line1 = line2 
    line2 = line3 
    line3 = file.getLine() 
    //compare line1, line2, and line3 
}