list previous or following list elements

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Fri Jun 27 09:57:56 CEST 2008


antar2 a écrit :
> Hello
> 
> 
> Suppose I have a textfile (text1.txt) with following four words:
> 
> Apple
> balcony
> cartridge
> damned
> paper
> bold
> typewriter
> 
> and I want to have a python script that prints the words following the
> word starting with the letter b (which would be cartridge) or
> differently put, a script that prints the element following a
> specified element:

def next_if(predicate, iterable):
     if not hasattr(iterable, next):
         iterable = iter(iterable)
     for element in iterable:
         if predicate(element):
             yield iterable.next()


f = open('/home/bruno/text1.txt', 'r')
for elt in next_if(lambda x: x.startswith('b'), f):
     print elt.strip()
f.close()


> I am more experienced in Perl, and a beginner in python
> 
> I wrote a script that - of course - does not work, that should print
> the element in a list following the element that starts with a b
> 
> import re
> f = open('text1.txt', 'r')
> list1 = []
> list2 = []
> for line in f:
> 	list1.append(line)
> a = re.compile("^b")
> int = 0
> while(int <= list1[-1]):
> 	int = int + 1
> 	a_match = a.search(list1[int])
> 	if(a_match):
> 		list2.append(list1[int + 1])
> print list2

f = open('text1.txt')
lines = f.readlines()
f.close()
matchings = [
    next for line, next in zip(lines, lines[1:])
    if line.startswith('b')
    ]

print matchings



More information about the Python-list mailing list