我有一个来自for循环的对象列表,我想将它们附加到列表中,以便我可以选择并连接它们。我的想法是代码或多或少会像这样运行:
for stringNumber from 0 to numberOfStrings
do string stuff...
tgID = Create TextGrid: tmin, tmax, tier_name$, phone$
Set interval text: 1, 1, phone$
# THIS IS WHERE I NEED HELP
tgList = append: tgID + ", "
endfor
selectObject: tgList
do ("Concatenate")
答案 0 :(得分:3)
你可以试试这个:
for stringNumber from 0 to numberOfStrings
# do string stuff...
tgID = Create TextGrid: tmin, tmax, tier_name$, phone$
Set interval text: 1, 1, phone$
tgList[stringNumber + 1] = tgID
endfor
selectObject()
for i from 1 to numberOfStrings + 1
plusObject: tgList[i]
endfor
Concatenate
selectObject()
取消选择所有内容,然后plusObject
将当前对象添加到选择中。我不确定选择循环中的循环索引是否正确,因为你从0开始循环,我无法尝试你的代码。
答案 1 :(得分:0)
在这种特殊情况下可能有点过分,但您也可以使用CPrAN上提供的selection
插件,该插件是为管理对象选择而创建的(完全披露:我写了它):
include ../../plugin_selection/procedures/tables.proc
@createEmptySelectionTable()
selection = createEmptySelectionTable.table
for stringNumber from 0 to numberOfStrings
Create TextGrid: tmin, tmax, tier_name$, phone$
Set interval text: 1, 1, phone$
@addToSelectionTable: selection
endfor
@restoreSavedSelection: selection
removeObject: selection
Concatenate
然而,要使其正常工作,您需要将脚本放在插件的子目录中(因此在Linux / Mac中的~/.praat-dir/plugin_foo/scripts/here.praat
之类的地方)。
希望将来能有办法解决这个问题。然后,大多数Praat脚本真的应该在插件中,即使它们是特定于项目的,所以...... </rant>