joining strings question
Tim Chase
python.list at tim.thechases.com
Fri Feb 29 10:35:18 EST 2008
> I have some data with some categories, titles, subtitles, and a link
> to their pdf and I need to join the title and the subtitle for every
> file and divide them into their separate groups.
>
> So the data comes in like this:
>
> data = ['RULES', 'title','subtitle','pdf',
> 'title1','subtitle1','pdf1','NOTICES','title2','subtitle2','pdf','title3','subtitle3','pdf']
>
> What I'd like to see is this:
>
> [RULES', 'title subtitle','pdf', 'title1 subtitle1','pdf1'],
> ['NOTICES','title2 subtitle2','pdf','title3 subtitle3','pdf'], etc...
The following iterator yields things that look like each of those
items:
def category_iterator(source):
source = iter(source)
last_cat = None
entries = []
try:
while True:
item = source.next()
if item == item.upper(): # categories are uppercase
if last_cat:
yield [last_cat] + entries
last_cat = item
entries = []
else:
title = item
subtitle = source.next()
link = source.next()
entries.append('%s %s' % (title, subtitle))
entries.append(link)
except StopIteration:
if last_cat:
yield [last_cat] + entries
if __name__ == '__main__':
data = ['RULES',
'title','subtitle','pdf',
'title1','subtitle1','pdf1',
'NOTICES',
'title2','subtitle2','pdf',
'title3','subtitle3','pdf']
for compact_category_info in category_iterator(data):
print repr(compact_category_info)
If your input data is malformed, you may get peculiar results
depending on how pathologically malformed that data is.
Hope this helps,
-tkc
More information about the Python-list
mailing list