代码之家  ›  专栏  ›  技术社区  ›  brucezepplin

在Groovy中使用writeLine复制输出

  •  0
  • brucezepplin  · 技术社区  · 6 年前

    我使用以下代码将注释输出到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行。i、 e.每个注释有一个副本。我似乎看不出剧本中的任何地方为什么会发生这种事。有什么建议吗?

    0 回复  |  直到 6 年前
        1
  •  1
  •   dedek    6 年前

    关于:

    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{ ,它迭代注释具有的所有特性,并为每个特性打印行到输出。您只需要打印每个注释的行,而不需要打印每个注释特征的行。