在python中将字符串转换为char

新手上路,请多包涵

是否有可能(例如内置函数)在 python 中将字符串转换为 char?例如,如果我给变量赋值

p1=100

然后有字符串

"p1",

是否可以将 p1 的值赋给一个新的变量 t 比如

t=char("p1")

这样我就得到

print(t)->100 ?

显然,上述解决方案不起作用,因为它会抛出以下错误消息:

 NameError: name 'char' is not defined

编辑:问题不在于最佳实践:我知道我应该用字典来做这件事,但我想做的是理解 Python 中的数据类型以及如何转换它们。例如,将字符串转换为整数相当容易,所以我想知道这是否同样适用于字符串到字符的转换。 eval() 命令确实解决了示例的问题,但没有回答上述问题。所以我会把目标编辑成

 char("p11")=20

哪个应该给我

 print(p11) -> 20

原文由 Paul Rousseau 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 940
2 个回答

您可能正在寻找 eval()https ://docs.python.org/3.5/library/functions.html#eval

 p1 = 100
print(eval('p1'))   # prints 100

如果你想评估表达式,你也可以使用 exec()

 p1 = 100
t = 'p1 += 99'
exec(t)
print(p1)           # prints 199

但是正如其他人已经指出的那样,您应该尽可能避免使用它。 timgeb 提供了一个不错的选择,例如字典。


如果你想把一个字符串变成一个 全局 变量,你也可以这样做:

 globals()['y'] = 5
print(y)

注意:当您在全局范围内(函数外)运行代码时,您还可以使用 locals()['y'] = 5 - 但这 在非全局范围内不起作用!

原文由 Mike Scotty 发布,翻译遵循 CC BY-SA 3.0 许可协议

不,使用字典。

 >>> names = {'p1': 100, 'p2': 200}
>>> t = names['p1']
>>> t
100

这将抛出一个 KeyError 如果名称不存在:

 >>> t = names['p3']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'p3'

…但您可以使用 dict.get 并提供默认值:

 >>> t = names.get('p3', 'default')
>>> t
'default'

其中默认默认值为 None

(顺便说一句,这与将字符串转换为字符(acter?)无关,您的术语很混乱。)

原文由 timgeb 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题