0

我有一个来自 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")
4

2 回答 2

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 开始循环,而我无法尝试您的代码。

于 2017-01-23T20:21:14.300 回答
0

在这种特殊情况下可能有点矫枉过正,但您也可以使用selectionCPrAN 上提供的插件,该插件是为管理对象选择而创建的(完全披露:我写的):

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

但是,要使其正常工作,您需要将脚本放在插件内的子目录中(例如~/.praat-dir/plugin_foo/scripts/here.praat在 Linux / Mac 中的某个地方)。

希望将来有办法解决这个问题。再说一次,大多数 Praat 脚本真的应该在插件中,即使它们是特定于项目的,所以......</rant>

于 2017-01-27T00:47:57.083 回答