如何在python中将字符串转换为变量

时间:2013-11-07 20:51:33

标签: python string variables io

我正在尝试从文本文件中读取字符串。在我阅读之后,我想将其转换为数组或变量。在文本文件中,我可以读取'b'我将'b'签到x,x='b',我想使用如何将'b'作为变量b以便s = sin(2*pi*x) 1}}是s = sin(2*pi*b)

对象: 我正在尝试设置配置文件,以便我可以轻松地从文本文件中更改输入的变量。

最后一步是我可以打印出来。

b = arange(0.0, 4.0, 0.01)
t = arange(0.0, 2.0, 0.01)
x = ['b'] // result after I read from the file
x = changestringtoVarible('b')

s = sin(2*pi*x)
plot(x, s)
xlabel('time(s)')
ylabel(y)
title(ttl)
grid(True)

我想选择是否使用bt作为文本文件中的xaxis,这就是我问这个问题的原因。

3 个答案:

答案 0 :(得分:3)

你正在做一种原始形式的解析。您的变量x将包含字符“b”或“t”,您希望使用它来控制表达式的计算方式。您不能在表达式中直接使用变量x,因为它只包含一个字符。您必须根据其值执行不同的代码。对于这样的简单情况,您可以使用if构造:

...
b = arange(0.0, 4.0, 0.01)
t = arange(0.0, 2.0, 0.01)

if x == 'b':
    xvalue = b
elif x == 't'
    xvalue = t

s = sin(2*pi*xvalue)
plot(xvalue, s)
...

对于大量案例,您可以使用字典:

...
xvalues = { 'b' : arange(0.0, 4.0, 0.01),
            't' : arange(0.0, 2.0, 0.01),
            # More values here
          }

xvalue = xvalues[x]
s = sin(2*pi*xvalue)
plot(xvalue, s)
....

答案 1 :(得分:1)

您可以使用eval。

例如:

b='4'
formula = "2*x"
formula = formula.replace("x", "%d")
Result = eval(formula % int(b))

答案 2 :(得分:1)

如果您只想使用字符串作为变量,可以使用pythons exec function:

>>> exec("some_string"+"=1234")
>>> some_string
1234

<强>更新

您最好在x中使用s = sin(2*pi*x)变量的其他名称,从现在开始我们可能会调用x y

b = arange(0.0, 4.0, 0.01)
t = arange(0.0, 2.0, 0.01)

假设x定义了应该使用哪一个,您可以使用以下代码将其分配给变量:

exec("y"+"="+x)
s = sin(2*pi*y)

那个人应该工作。但我建议你将代码改为更稳固的东西(例如使用字典)。