SPSS / Python的 - 访问变量标签

问题描述 投票:1回答:1

我试图访问变量标签在使用Python在SPSS循环。该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.

任何帮助将不胜感激。

python for-loop key spss
1个回答
1
投票

该生产线spss.Submit('variable labels %s "%s" [TimeStamp]' % (myvar,varlabel) + ".")是什么导致你的麻烦。

在[时间戳]位基本上是告诉Python来查找名为“时间戳”在字典中的关键,但在[时间戳]之前没有找到合适的数据结构 - 即一本字典 - 但没有钥匙串。也许这可能会使它更清晰:

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

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

>>> myVariable
>>> 20190204-0814

Python是在寻找这样的数据结构,并希望查找的关键“时间戳”。现在,我想你只是想你的标签阅读“无论变量标签分配[时间戳]”?

简单地改变两行

spss.Submit('variable labels %s "%s" + " [TimeStamp]"' % (myvar,varlabel) + ".")
© www.soinside.com 2019 - 2024. All rights reserved.