Reading files, splitting on a delimiter and newlines.

chrispwd at gmail.com chrispwd at gmail.com
Wed Jul 25 21:32:52 EDT 2007


On Jul 25, 7:56 pm, "attn.steven.... at gmail.com"
<attn.steven.... at gmail.com> wrote:
> On Jul 25, 8:46 am, chris... at gmail.com wrote:
>
>
>
> > Hello,
>
> > I have a situation where I have a file that contains text similar to:
>
> > myValue1 = contents of value1
> > myValue2 = contents of value2 but
> >                         with a new line here
> > myValue3 = contents of value3
>
> > My first approach was to open the file, use readlines to split the
> > lines on the "=" delimiter into a key/value pair (to be stored in a
> > dict).
>
> > After processing a couple files I noticed its possible that a newline
> > can be present in the value as shown in myValue2.
>
> > In this case its not an option to say remove the newlines if its a
> > "multi line" value as the value data needs to stay intact.
>
> > I'm a bit confused as how to go about getting this to work.
>
> > Any suggestions on an approach would be greatly appreciated!
>
> Check the length of the list returned from split; this allows
> your to append to the previously extracted value if need be.
>
> import StringIO
> import pprint
>
> buf = """\
> myValue1 = contents of value1
> myValue2 = contents of value2 but
>                    with a new line here
> myValue3 = contents of value3
> """
>
> mockfile = StringIO.StringIO(buf)
>
> record=dict()
>
> for line in mockfile:
>     kvpair = line.split('=', 2)
>     if len(kvpair) == 2:
>         key, value = kvpair
>         record[key] = value
>     else:
>         record[key] += line
>
> pprint.pprint(record)
>
> # lstrip() to remove newlines if needed ...
>
> --
> Hope this helps,
> Steven

Great thank you! That was the logic I was looking for.




More information about the Python-list mailing list