【问题标题】:duplicate output using writeLine in Groovy在 Groovy 中使用 writeLine 复制输出
【发布时间】:2019-07-10 22:38:22
【问题描述】:

我正在使用以下代码将注释输出到 csv:

new File(scriptParams.outputFile).withWriterAppend{ out ->
  ([Default:(doc.getAnnotations("MS").get("EDSS"))]).each{setName, set ->
    set.each{ anno ->
        anno.getFeatures().each{
            def f = anno.getFeatures()
          out.writeLine(/"${doc.getName()}",${anno.getId()},"${anno.getType()}",${anno.start()},${anno.end()},"${f.get('value')}","${f.get('valueLower')}","${f.get('valueUpper')}"/)
        }       
    }
  }
}

效果很好,但是对于找到的每个注释,我正好得到 2 行。即每个注释有 1 个重复项。我似乎在脚本中的任何地方都看不到为什么会发生这种情况。有什么指点吗?

【问题讨论】:

    标签: groovy gate


    【解决方案1】:

    怎么样:

    new File(scriptParams.outputFile).withWriterAppend{ out ->
      doc.getAnnotations("MS").get("EDSS").each{
        anno ->
          def f = anno.getFeatures()
          out.writeLine(/"${doc.getName()}",${anno.getId()},"${anno.getType()}",${anno.start()},${anno.end()},"${f.get('value')}","${f.get('valueLower')}","${f.get('valueUpper')}"/)
      }
    }
    

    主要问题是anno.getFeatures().each{,它会迭代注释具有的所有特征,并且对于每个特征,它都会将行打印到输出。您只需打印每个注释的行,而不是每个注释特征。

    【讨论】:

    • 谢谢!你能帮我理解我哪里出错了吗?
    猜你喜欢
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2021-01-15
    • 1970-01-01
    相关资源
    最近更新 更多