user131983
user131983

Reputation: 3937

Converting multi-line String to Dict in Python

I have the multi-line string taken from a csv file and am trying to convert it into a dict. I've written the piece of code below, which I would like to use, but don't know how to progress with it.

scsv = '''coupon,    months_to_maturity,    FACE_VALUE,
                0.3758,    12,    100,
                0.7287,    24,    100,
                1.0894,    36,    100,
                1.4019,    48,    100,
                1.6542,    60,    100,
                1.8512,    72,    100,
                2.0034,    84,   100,
                2.1213,    96,    100,
                2.2141,    108,    100,
                2.2891,    120,    100,
                2.3516,    132,    100,
                2.4058,    144,    100,
                2.4543,    156,    100,
                2.4994,    168,    100,
                2.5423,    180,    100,
                2.5841,    192,    100,
                2.6253,    204,    100,
                2.6664,    216,    100,
                2.7076,    228,    100,
                2.7491,    240,    100,
                2.7908,    252,    100,
                2.8328,    264,    100,
                2.8751,    276,    100,
                2.9175,    288,    100,
                2.9601,    300,    100,
                3.0026,    312,    100,
                3.0451,    324,    100,
                3.0875,    336,    100,
                3.1296,    348,    100,
                3.1714,    360,    100,
             '''
f = StringIO(scsv)
reader = csv.reader(f, delimiter=',')
for row in reader:
    #Dont know what should go here

Thank You

Upvotes: 2

Views: 1174

Answers (1)

Sait
Sait

Reputation: 19815

You can do something like:

import os
import csv
from StringIO import StringIO

scsv = """coupon,    months_to_maturity,    FACE_VALUE,
                0.3758,    12,    100,
                0.7287,    24,    100,
                1.0894,    36,    100,
                1.4019,    48,    100,
                1.6542,    60,    100,
                1.8512,    72,    100,
                2.0034,    84,    100,
                2.1213,    96,    100,
                2.2141,    108,    100,
                2.2891,    120,    100,
                2.3516,    132,    100,
             """

scsv = scsv.replace(' ','')  #remove white spaces
scsv = scsv.replace(',' + os.linesep, os.linesep) #remove commas at the end of the lines

f = StringIO(scsv)
reader = csv.DictReader(f, delimiter=',')
rows = [row for row in reader]

print rows[0]
# {'coupon': '0.3758', 'months_to_maturity': '12', 'FACE_VALUE': '100'}

Upvotes: 3

Related Questions