これはばかげた質問になると確信しています...私は文字列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']
、それは始まりだと思います。何か案は?
私はこのようなもので行きます:
d = {}
for assignment in s.split(","):
name, value = assignment.split("=")
d[name.strip()] = float(value)
これにより、名前を値にマッピングする辞書が得られます。これは、変数を動的に作成するよりもおそらく優れています。私はあなたが本当に後者をやりたいのなら、あなたもすることができます
exec s.replace(",", "\n")
しかし、これは本当に恐ろしいことです。
ちょうど二重に分割:
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(',')) )
これを試して:
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