0

我正在尝试从文本文件中读取字符串。读完后,我想将其转换为数组或变量。在文本文件中,我可以读取 'b' 我将 'b' 签名到 x,x='b'并且我想使用如何将'b'其作为变量放置,b这样s = sin(2*pi*x)就是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,这就是我问这个的原因。

4

3 回答 3

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)
....
于 2013-11-07T21:02:26.387 回答
1

您可以使用评估。

例如:

b='4'
formula = "2*x"
formula = formula.replace("x", "%d")
Result = eval(formula % int(b))
于 2013-11-07T21:03:49.780 回答
1

如果您只想将字符串用作变量,则可以使用 pythons exec 函数:

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

更新:

您最好为xin 中的变量使用另一个名称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)

那一个应该工作。但我建议您将代码更改为更可靠的代码(例如使用字典)。

于 2013-11-07T21:07:44.927 回答