【问题标题】:How to parse a JSON file like this?如何解析这样的 JSON 文件?
【发布时间】:2019-10-31 05:43:40
【问题描述】:

我想解析this JSON file

为了得到这样的结果,第二列是 Canonical SMILES,第三列是 Isomeric SMILES。

5317139<TAB><TAB>CCCC=C1C2=C(C3C(O3)CC2)C(=O)O1<TAB>CCC/C=C\\1/C2=C(C3C(O3)CC2)C(=O)O1

谁能告诉我如何在 jq 中以最好的方式做到这一点?

【问题讨论】:

    标签: json jq pubchem


    【解决方案1】:

    假设&lt;TAB&gt;&lt;TAB&gt; 的出现是错字,以下 jq 脚本(使用 -r 命令行选项运行)满足所述要求:

    def getString($TOCHeading):
      .. | objects | select( .TOCHeading == $TOCHeading)
      | .Information[0].Value.StringWithMarkup[0].String;
    
    .Record
    | [.RecordNumber,
       getString("Canonical SMILES"),
       getString("Isomeric SMILES")]
    | @tsv
    

    这个脚本产生:

    5317139 CCCC=C1C2=C(C3C(O3)CC2)C(=O)O1  CCC/C=C\\1/C2=C(C3C(O3)CC2)C(=O)O1
    

    【讨论】:

    • “StringWithMarkup”都是数组。如果有多个这样的字符串(例如,显示错误并返回非零),如何使代码健壮?
    • jq 解决方案在某种意义上已经很健壮了。请澄清新要求,或者提出新的 SO 问题。
    猜你喜欢
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2012-09-09
    • 2013-06-27
    相关资源
    最近更新 更多