gpt4 book ai didi

python - SPSS/Python - 访问变量标签

转载 作者:行者123 更新时间:2023-12-01 08:23:20 24 4
gpt4 key购买 nike

我正在尝试使用 Python 访问 SPSS 中 for 循环中的变量标签。 for 循环迭代一系列变量,删除 1-3 并重命名 5 个变量序列中的 4 和 5。这工作正常,但现在当尝试通过 SPSS 访问变量标签时,我遇到了“unicode 对象没有属性键”错误。

我认识到我需要以某种方式引用数组中的键而不是字符串,但作为一名新手程序员,我正在努力弄清楚如何更新我现有的代码:

begin program.
import spss, spssaux
vdict=spssaux.VariableDict()
mylist=vdict.range(start="M10", end="ENDOK_D")
nvars = len(mylist)
mycounter = 1
durations = ""

for i in range(nvars):
myvar = mylist[i]
if (mycounter < 4):
spss.Submit("delete variables %s." % myvar)
mycounter +=1
elif (mycounter == 4):
varlabel = mylist[i].VariableLabel
spss.Submit('variable labels %s "%s" [TimeStamp]' % (myvar,varlabel) + ".")
if (myvar.endswith("_C")): mynewvar = myvar[:-2] + "_TS"
spss.Submit("rename variables (%s = %s)" % (myvar,mynewvar) + ".")
spss.Submit("formats %s (DATETIME28.4)" % (mynewvar) + ".")
mycounter +=1
elif (mycounter == 5):
varlabel = mylist[i].VariableLabel
spss.Submit('variable labels %s "%s" [TimeStamp]' % (myvar,varlabel) + ".")
if (myvar.endswith("_D")): mynewvar = myvar[:-2] + "_TSD"
spss.Submit("rename variables (%s = %s)" % (myvar,mynewvar) + ".")
durations += mynewvar + " "
mycounter = 1
spss.Submit("alter type %s (F4.0)" % durations + ".")
end program.

任何帮助将不胜感激。

最佳答案

线路spss.Submit('variable labels %s "%s"[TimeStamp]' % (myvar,varlabel) + ".") 是给您带来麻烦的原因。

[TimeStamp] 位基本上告诉 python 在字典中查找名为“TimeStamp”的键,但在 [TimeStamp] 之前它找不到正确的数据结构 - 即字典 - 但没有找到一个字符串有 key 。也许这可能会更清楚:

myDict = {
"varname": "myVariable",
"label": "This is myVariable's label!",
"TimeStamp": "20190204-0814"
}

print (myDict["varname"])
print (myDict["TimeStamp"])

>>> myVariable
>>> 20190204-0814

Python正在寻找这样的数据结构,并想要查找键“TimeStamp”。现在,我假设您只想让标签显示“分配了任何变量标签[时间戳]”?

只需将这两行更改为

spss.Submit('variable labels %s "%s" + " [TimeStamp]"' % (myvar,varlabel) + ".")

关于python - SPSS/Python - 访问变量标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54472386/

24 4 0