On Oct 10, 11:19 am, Shriphani <[EMAIL PROTECTED]> wrote: > Hello all, > > Let us say I have a function like this: > > def efficientFiller(file): > worthless_list = [] > pot_file = open(file,'r') > pot_file_text = pot_file.readlines() > for line in pot_file_text: > if line.find("msgid") != -1: > message_id = shlex.split(line)[1] > if message_id in dictionary: > number = pot_file_text.index(line) > corresponding_crap = > dictionary.get(message_id) > final_string = 'msgstr' + " " + '"' + > corresponding_crap + '"' + '\n' > pot_file_text[number+1] = final_string > yield pot_file_text > > efficient_filler = efficientFiller("libexo-0.3.pot") > new_list = list(efficient_filler) > print new_list > > I want to plainly get the last value the yield statement generates. > How can I go about doing this please?
If you want only one value, you should be using return rather than yield. What do you think your code does - and what is it supposed to do? If it's not doing what it's supposed to be doing, it's better to understand why not rather than try to patch up the output. I'm going to guess that you want to take the lines of a file, and after every line of the form 'msgid K' insert a line 'msgstr "..."' when K is in some dictionary you've got. I'll assume you want the new lines as a generator rather than as a list. Then, something like (untested) def lookup_msgids(filename): """Yield lines from the given file, with 'msgstr' lines added after 'msgid' lines when the id is in the id dictionary.""" for line in open(filename, 'r'): yield line if line.startswith('msgid'): msgid = shlex.split(line)[1] if msgid in dictionary: yield 'msgstr "%s"\n' % dictionary[msgid] libexo_pot = list(lookup_msgids('libexo-0.3.pot')) print libexo_pot -- Paul Hankin -- http://mail.python.org/mailman/listinfo/python-list