python - 将字符串分解为变量

时间:2012-07-18 10:53:27

标签: python string

我确信这会成为一个愚蠢的问题......我试图将像s = 'P1=12,P2=34,P3=56,P4=78'这样的字符串分解成一堆个别变量:

P1 = 12
P2 = 34
P3 = 56
P4 = 78

s.split(',')为我提供了一个列表['P1=12','P2=34','P3=56','P4=78'],我认为这是一个开始。有什么想法吗?

3 个答案:

答案 0 :(得分:8)

我会选择这样的事情:

d = {}
for assignment in s.split(","):
    name, value = assignment.split("=")
    d[name.strip()] = float(value)

这将为您提供将名称映射到值的字典,这最有可能比尝试动态创建变量更好。如果你真的想做后者,你也可以做

exec s.replace(",", "\n")

但这真的太可怕了。

答案 1 :(得分:4)

只需双重拆分:

string = 'P1=12,P2=34,P3=56,P4=78'
d = dict( s.split('=') for s in string.split(',') )
# d == {'P2': '34', 'P3': '56', 'P1': '12', 'P4': '78'}

我已将这些放入dict中,因为根据您使用数据的内容,查找可能更方便。

如果您希望将值作为整数,则可以执行以下操作:

d = dict( (k, int(v)) for k, v in (s.split('=') for s in string.split(',')) )

答案 2 :(得分:0)

试试这个:

s = 'A=1,B=2,C=3'
d = dict([i.split('=') for i in s.split(',')])
o = '%s = %s' % (', '.join(d.keys()), ', '.join(d.values()))
exec(o)

print A, B, C
# 1, 2, 3