在Python中将多行字符串转换为Dict

时间:2015-08-20 16:59:33

标签: python csv

我从csv文件中获取了多行字符串,并尝试将其转换为dict。我已经编写了下面的代码,我想使用它,但不知道如何使用它。

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

谢谢

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

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'}