Python - 在 for in 语句中使用字符串?

标签 python string for-loop expression

所以我知道这是一种解决方法,可能有更好的方法来做到这一点,但事情就是这样。我从收集这些信息的地方简化了代码,并只给出了可靠的值。

curSel = nuke.selectedNodes()
knobToChange = "label"
codeIn = "[value in]"

kcPrefix = "x"
kcStart = "['"
kcEnd = "']"

changerString = kcPrefix+kcStart+knobToChange+kcEnd


for x in curSel:
    changerString.setValue(codeIn)

但我得到了我想我会的错误 - 这是一个字符串没有属性“setValue”

因为如果我只键入 x['label'] 而不是 changerString,它就可以工作,但即使 changer string 说的是完全相同的东西,它也会被读取为字符串而不是代码。

有什么想法吗?

最佳答案

看起来您正在寻找一些东西来根据您当前的命名空间将字符串评估为 python 对象。一种方法是使用 globals 字典:

globals()['x']['label'].setValue(...)

换句话说,globals()['x']['label']x['label'] 是一样的。

或者为您的情况明确说明:

globals()[kcPrefix][knobToChange].setValue(codeIn)

其他人可能会建议 eval:

eval('x["label"]').setValue(...)  #insecure and inefficient

但是 globals 绝对是一个更好的主意。


最后,通常当你想做这样的事情时,你最好首先使用字典或其他某种数据结构来让你的数据更有条理

关于Python - 在 for in 语句中使用字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14199484/

相关文章:

r - R 中的 For 循环是邪恶的吗?

python - 100 万个整数分组依据 - 发生次数

c++ - 在子字符串后插入字符串

python-requests 认证代理 httplib.BadStatusLine

Lua 中的字符串操作 : Swap characters in a string

java - 字符串比较返回错误结果

c++ - 在C++中获取字符串的长度

java - 数组值不更新

python - 使用 Tkinter 显示 CSV

javascript - 在数据表列中传递 URL Django 模式