将打印输出分配给python中的变量


问题内容

我想知道如何将打印输出分配给变量。

因此,如果

mystring = "a=\'12\'"

然后

print mystring 
a=12

我想像** kwargs这样传递

test(mystring)

我怎样才能做到这一点?

有关更多解释:我有一个从数据文件的注释行中获取的字符串列表。它看起来像这样:

"a='0.015in' lPrime='0.292' offX='45um' offY='75um' sPrime='0.393' twistLength='0'",
 "a='0.015in' lPrime='0.292' offX='60um' offY='75um' sPrime='0.393' twistLength='0'",
 "a='0.015in' lPrime='0.292' offX='75um' offY='75um' sPrime='0.393' twistLength='0'",
 '']

我想将值放入某种结构中,以便可以绘制各种变量与任何变量的关系,因此列表基本上是一个图例,并且我想绘制轨迹的函数与图例中给定的变量。

因此,如果对于每个条目我都有一条轨迹,那么我可能想绘制一系列值的max(trace)vs offX。

我的第一个想法是将字符串作为** kwargs传递给一个函数,该函数将生成相应数据的矩阵。


问题答案:

我个人不会那样做。一种更没有技巧的解决方案是先根据您的数据构建字典,然后将其整体传递给函数**kwargs。例如(这不是最优雅的方法,但这只是说明性的):

import re

remove_non_digits = re.compile(r'[^\d.]+')

inputList = ["a='0.015in' lPrime='0.292' offX='45um' offY='75um' sPrime='0.393' twistLength='0'",
 "a='0.015in' lPrime='0.292' offX='60um' offY='75um' sPrime='0.393' twistLength='0'",
 "a='0.015in' lPrime='0.292' offX='75um' offY='75um' sPrime='0.393' twistLength='0'", '']

#remove empty strings
flag = True
while flag:
    try:
        inputList.remove('')
    except ValueError:
        flag=False

outputList = []

for varString in inputList:
    varStringList = varString.split()
    varDict = {}
    for aVar in varStringList:
        varList = aVar.split('=')
        varDict[varList[0]] = varList[1]
    outputList.append(varDict)

for aDict in outputList:
    for aKey in aDict:
        aDict[aKey] = float(remove_non_digits.sub('', aDict[aKey]))

print outputList

打印:

[{'a': 0.014999999999999999, 'offY': 75.0, 'offX': 45.0, 'twistLength': 0.0, 'lPrime': 0.29199999999999998, 'sPrime': 0.39300000000000002}, {'a': 0.014999999999999999, 'offY': 75.0, 'offX': 60.0, 'twistLength': 0.0, 'lPrime': 0.29199999999999998, 'sPrime': 0.39300000000000002}, {'a': 0.014999999999999999, 'offY': 75.0, 'offX': 75.0, 'twistLength': 0.0, 'lPrime': 0.29199999999999998, 'sPrime': 0.39300000000000002}]

这似乎正是您想要的。