how to print only lines which contain substring PYTHON
===

i have a file with strings:

    REALSTEP 12342 {2012-7-20	15:10:39};[{416 369 338};{423 432 349};{383 380 357};{399 401 242};{0 454 285};{457 433 115};{419 455 314};{495 534 498};][{428 377 336};{433 456 345};{386 380 363};{384 411 
    REALSTEP 7191 {2012-7-20	15:10:41};[{416 370 361};{406 417 376};{377 368 359};{431 387 251};{0 461 366};{438 409 134};{429 411 349};{424 505 364};][{423 372 353};{420 433 374};{379 365 356};{431 387 2
    REALSTEP 12123 {2012-7-20	15:10:42};[{375 382 329};{386 402 347};{374 378 357};{382 384 259};{0 397 357};{442 424 188};{398 384 356};{392 420 355};][{404 405 359};{420 432 372};{405 408 383};{413 407 
    REALSTEP 27237 {2012-7-20	15:10:44};[{431 375 329};{416 453 334};{387 382 349};{397 403 248};{0 451 300};{453 422 131};{433 401 317};{434 505 326};][{443 384 328};{427 467 336};{391 386 344};{394 413 
    FAKE 32290 {2012-7-20	15:10:48};[{424 399 364};{408 446 366};{397 394 389};{415 409 261};{0 430 374};{445 428 162};{432 416 375};{431 473 380};][{424 398 376};{412 436 372};{401 400 390};{417 409 261}
    FAKE 32296 {2012-7-20	15:10:53};[{409 326 394};{445 425 353};{401 402 357};{390 424 250};{0 420 353};{447 423 143};{404 436 351};{421 527 420};][{410 332 400};{450 429 356};{402 403 356};{391 425 250}
    FAKE 32296 {2012-7-20	15:10:59};[{381 312 387};{413 405 328};{320 387 376};{388 387 262};{0 402 326};{417 418 177};{407 409 335};{443 502 413};][{412 336 417};{446 437 353};{343 417 403};{417 418 258}
    FAKE 32295 {2012-7-20	15:11:4};[{377 314 392};{416 403 329};{322 388 375};{385 391 261};{0 403 329};{425 420 168};{414 393 330};{458 502 397};][{408 338 421};{449 435 355};{345 418 403};{413 420 257};
    FAKE 32295 {2012-7-20	15:11:9};[{371 318 411};{422 385 333};{342 379 352};{394 395 258};{0 440 338};{418 414 158};{420 445 346};{442 516 439};][{401 342 441};{456 415 358};{367 407 377};{420 420 255};
    FAKE 32296 {2012-7-20	15:11:15};[{373 319 412};{423 386 333};{344 384 358};{402 402 257};{0 447 342};{423 416 151};{422 450 348};{447 520 442};][{403 342 442};{456 416 358};{366 409 379};{422 421 255}
    REALSTEP 7191 {2012-7-20	15:10:41};[{416 370 361};{406 417 376};{377 368 359};{431 387 251};{0 461 366};{438 409 134};{429 411 349};{424 505 364};][{423 372 353};{420 433 374};{379 365 356};{431 387 2
    REALSTEP 12123 {2012-7-20	15:10:42};[{375 382 329};{386 402 347};{374 378 357};{382 384 259};{0 397 357};{442 424 188};{398 384 356};{392 420 355};][{404 405 359};{420 432 372};{405 408 383};{413 407 
    REALSTEP 27237 {2012-7-20	15:10:44};[{431 375 329};{416 453 334};{387 382 349};{397 403 248};{0 451 300};{453 422 131};{433 401 317};{434 505 326};][{443 384 328};{427 467 336};{391 386 344};{394 413 



I read the file with readlines() so:

   lines.readlines()

Now I want to loop over   lines   and print only when there is a consecutive block of lines larger than 3, containing the string "REALSTEP". So in the example the expected result is:

    REALSTEP 12342 {2012-7-20   15:10:39};[{416 369 338};{423 432 349};{383 380 357};{399 401 242};{0 454 285};{457 433 115};{419 455 314};{495 534 498};][{428 377 336};{433 456 345};{386 380 363};{384 411 
    REALSTEP 7191 {2012-7-20    15:10:41};[{416 370 361};{406 417 376};{377 368 359};{431 387 251};{0 461 366};{438 409 134};{429 411 349};{424 505 364};][{423 372 353};{420 433 374};{379 365 356};{431 387 2
    REALSTEP 12123 {2012-7-20   15:10:42};[{375 382 329};{386 402 347};{374 378 357};{382 384 259};{0 397 357};{442 424 188};{398 384 356};{392 420 355};][{404 405 359};{420 432 372};{405 408 383};{413 407 
    REALSTEP 27237 {2012-7-20   15:10:44};[{431 375 329};{416 453 334};{387 382 349};{397 403 248};{0 451 300};{453 422 131};{433 401 317};{434 505 326};][{443 384 328};{427 467 336};{391 386 344};{394 413 


I tried this:

    lines = f.readlines()
    idx = -1
    #loop trough all lines in the file
    for i, line in enumerate(lines):
        if idx > i:
            continue
        else:
            if "REALSTEP" in line:
                steps = lines[i:i+3]
                for s in steps:
                    print s[:200]

                #check for blokc of realsteps
                if is_block(steps, "REALSTEP") == 3:
                    #prints the block up to the first next "FAKE STEP"
                    lst = get_block(lines[i:-1])
                    for l in lst:
                        print l[:200]
                    idx =  i + len(lst)
                    print "next block============"


where the function is_block is this:

    def is_block(lines, check):
        #print len(lines)
        bool = 1
        for l in lines:
            if check in l:
                bool = 1
            else:
                bool = 0
            bool = bool + bool
        return bool

and the function get_block:

    def get_block(lines):
        lst = []
        for l in lines:
            if "REALSTEP" in l:
                #print l[:200]
                lst.append(l)
            else:
                break
        return lst

While this works, it prints all lines containing the string "REALSTEPS". The print len(lines) in is_block(lines) is always 10 when the function is called so that is not it. 

I am confused, please help me out here! 
