views:

42

answers:

3

Hi,

I want to convert lines in a text file from this:

animal    cat, mouse, dog, horse  
numbers    22,45,124,87

to this:

animal    cat  
animal    mouse  
animal    dog  
animal    horse  
numbers    22  
numbers    45  
numbers    124  
numbers    87

How would I do this conversion in python?

Thanks

A: 

Use a collections.defaultdict.

You might want to search SO for similar questions.

S.Lott
+4  A: 
with open('thefile.txt') as fin:
  with open('result.txt') as fou:
    for line in fin:
      key, values = line.split(None, 1)
      vs = [x.strip() for x in values.split(',')]
      for v in vs:
          fou.write('%s    %s\n' % (key, v))
Alex Martelli
A: 

With zip you could do like this:

inp="""animal    cat, mouse, dog, horse  
numbers    22,45,124,87
"""
for line in inp.splitlines():
    key,data = line.split(None,1)
    print '\n'.join("%s%8s" % line
                    for line in zip([key.strip()] * (data.count(',')+1),
                                    (item.strip() for item in data.split(','))))
Tony Veijalainen