(beginner question) ConfigParser nuances

2011-05-02 Thread Unknown Moss
Hi - Beginner question here. I'm working with ConfigParser. I'd like
to take a multiline variable and convert it directly to an array.
Seems like a common  problem, but I don't see how I can do it without
doing a little parsing in my own code. Here's what I'm doing ...

 import ConfigParser
 import io
 sample = 
... [Example]
... fruit = apple
... orange
... pear
... 
 config = ConfigParser.RawConfigParser()
 config.readfp(io.BytesIO(sample))
 config.get(Example, fruit)
'apple\norange\npear'
 temp = config.get(Example, fruit)
 temp.split()
['apple', 'orange', 'pear']

I'm thinking there's a way to avoid this intermediate temp.split()
step. Is there not a way to move a multiline value straight into an
array using ConfigParser?

Thanks for the help.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: (beginner question) ConfigParser nuances

2011-05-02 Thread Chris Rebert
On Mon, May 2, 2011 at 3:04 PM, Unknown Moss unknownm...@gmail.com wrote:
 Hi - Beginner question here. I'm working with ConfigParser. I'd like
 to take a multiline variable and convert it directly to an array.
 Seems like a common  problem, but I don't see how I can do it without
 doing a little parsing in my own code. Here's what I'm doing ...

 import ConfigParser
 import io
 sample = 
 ... [Example]
 ... fruit = apple
 ...     orange
 ...     pear
 ... 
 config = ConfigParser.RawConfigParser()
 config.readfp(io.BytesIO(sample))
 config.get(Example, fruit)
 'apple\norange\npear'
 temp = config.get(Example, fruit)
 temp.split()
 ['apple', 'orange', 'pear']

 I'm thinking there's a way to avoid this intermediate temp.split()
 step. Is there not a way to move a multiline value straight into an
 array using ConfigParser?

Nope, there is not. I think some might instead use several numbered
options to similar effect:

# config file
[Example]
fruit1: apple
fruit2: orange
fruit3: pear

# Python
from itertools import count
fruits = []
names = (fruit + str(i) for i in count(1))
for name in names:
if not config.has_option(Example, name):
break
fruits.append(config.get(Example, name))


Cheers,
Chris
--
http://rebertia.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: (beginner question) ConfigParser nuances

2011-05-02 Thread Unknown Moss
On May 2, 3:25 pm, Chris Rebert c...@rebertia.com wrote:
 On Mon, May 2, 2011 at 3:04 PM, Unknown Moss unknownm...@gmail.com wrote:
  Hi -Beginnerquestionhere. I'm working with ConfigParser. I'd like
  to take a multiline variable and convert it directly to an array.
  Seems like a common  problem, but I don't see how I can do it without
  doing a little parsing in my own code. Here's what I'm doing ...

  import ConfigParser
  import io
  sample = 
  ... [Example]
  ... fruit = apple
  ...     orange
  ...     pear
  ... 
  config = ConfigParser.RawConfigParser()
  config.readfp(io.BytesIO(sample))
  config.get(Example, fruit)
  'apple\norange\npear'
  temp = config.get(Example, fruit)
  temp.split()
  ['apple', 'orange', 'pear']

  I'm thinking there's a way to avoid this intermediate temp.split()
  step. Is there not a way to move a multiline value straight into an
  array using ConfigParser?

 Nope, there is not. I think some might instead use several numbered
 options to similar effect:

 # config file
 [Example]
 fruit1: apple
 fruit2: orange
 fruit3: pear

 # Python
 from itertools import count
 fruits = []
 names = (fruit + str(i) for i in count(1))
 for name in names:
     if not config.has_option(Example, name):
         break
     fruits.append(config.get(Example, name))

 Cheers,
 Chris
 --http://rebertia.com

Ok, thanks Chris. Maybe I'm getting too lazy in my old age.  :-)
-- 
http://mail.python.org/mailman/listinfo/python-list