Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python-将字符串分解为变量_Python_String - Fatal编程技术网

python-将字符串分解为变量

python-将字符串分解为变量,python,string,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'],我想这是一个开始。有什么想法吗?我想说这样的话: d = {} for assignment in s.split(","): name, value = assignment.spl

我相信这会变成一个愚蠢的问题。。。我试图将一个字符串(如
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")

但这真的很可怕。

我会选择这样的方式:

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(',')) )
只需双重拆分:

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
试试这个:

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

您想将这些转换为实际的可执行Python语句吗?字符串将由科学仪器吐出-在本例中,四个P是四个压力传感器上的读数。我希望能够将读数存储在用户可以频繁更新和查询的变量中。是否要将这些变量转换为实际可执行的Python语句?字符串将由科学仪器吐出-在这种情况下,四个P是四个压力传感器上的读数。我希望能够将读数存储在变量中,这些变量可以经常更新,并由用户查询。感谢这一点,字典肯定能完成这项工作。难道没有一种简洁的方法可以将dict分解成单独的浮点吗?@poorsod:变量的名称是固定的吗?它是否总是
P1
P2
P3
<代码>P4
?我希望能够为不同的输出重用代码。例如,同一个仪器在不同的命令上可能会吐出一个字符串,如
CRYO=0.1,1K=0.2,STILL=0.3,MC=0.4
。我希望能够将这样的各种字符串发送到同一个函数,该函数将输出适当命名的变量。@poorsod:使用这个字符串,您希望有一个名为
1K
的变量吗?看来字典是最好的选择。也谢谢你,字典肯定能帮上忙。难道没有一种简洁的方法可以将dict分解成单独的浮点吗?@poorsod:变量的名称是固定的吗?它是否总是
P1
P2
P3
<代码>P4?我希望能够为不同的输出重用代码。例如,同一个仪器在不同的命令上可能会吐出一个字符串,如
CRYO=0.1,1K=0.2,STILL=0.3,MC=0.4
。我希望能够将这样的各种字符串发送到同一个函数,该函数将输出适当命名的变量。@poorsod:使用这个字符串,您希望有一个名为
1K
的变量吗?似乎字典是一条出路。另请参阅,我认为我使用
exec
的解决方案非常糟糕……如果您不知道exec执行的值,那么IMHO exec非常糟糕,在这里,我们几乎可以肯定它只是解包而已。:)你有一个观点,考虑到这些信息来自某个工具,
exec
可能没有我在本例中所想的那么糟糕。我认为我使用
exec
的解决方案非常糟糕……如果你不知道它执行的值,那么IMHO exec非常糟糕,在这里,我们非常确定它只是解包而已。:)你有一个观点,假设这些信息来自某个工具,
exec
可能不像我在本例中所想的那么糟糕。