FAQ
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.

Search Discussions

  • Chris Rebert at May 2, 2011 at 10:25 pm

    On Mon, May 2, 2011 at 3:04 PM, Unknown Moss 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
  • Unknown Moss at May 3, 2011 at 2:56 am

    On May 2, 3:25?pm, Chris Rebert wrote:
    On Mon, May 2, 2011 at 3:04 PM, Unknown Moss 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. :-)

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedMay 2, '11 at 10:04p
activeMay 3, '11 at 2:56a
posts3
users2
websitepython.org

2 users in discussion

Unknown Moss: 2 posts Chris Rebert: 1 post

People

Translate

site design / logo © 2022 Grokbase