【问题标题】:Extract field and values from a string in R [duplicate]从R中的字符串中提取字段和值[重复]
【发布时间】:2020-03-30 10:51:32
【问题描述】:

我有这个字符串:

x <- '[{"code":"B1182","description":"Tire pressure monitor module","faultInformations":[{"description":"---"},{"description":"TRUE","description_eng":"TRUE","description_fre":"TRUE","description_ger":"TRUE","description_spa":"TRUE","description_ita":"TRUE","description_tur":"TRUE"}],"freezeFrames":[],"enhancedDtcInfos":[],"status":"ACTIVE","system":"MULTIFUNCTION","systemMeta":{"systemName":null,"subSystemName":null},"description_eng":"Tire pressure monitor module","description_fre":"Module de surveillance de la pression des pneus","description_ger":"Reifendrucküberwachung","description_spa":"Módulo de control de la presión de los neumáticos","description_ita":"Modulo monitor di pressione pneumatico","description_tur":"Lastik basıncı izleme modülü"},{"code":"B124D","description":"Sensor, tyre pressure","faultInformations":[{"description":"---"},{"description":"TRUE","description_eng":"TRUE","description_fre":"TRUE","description_ger":"TRUE","description_spa":"TRUE","description_ita":"TRUE","description_tur":"TRUE"}],"freezeFrames":[],"enhancedDtcInfos":[],"status":"ACTIVE","system":"MULTIFUNCTION","systemMeta":{"systemName":null,"subSystemName":null},"description_eng":"Sensor, tyre pressure","description_fre":"Capteur, pression des pneus","description_ger":"Sensor Reifendruck","description_spa":"Sensor de presión del neumático","description_ita":"Sensore, pressione pneumatici","description_tur":"Sensör, lastik hava basıncı"}]'

如果我们格式化样式,它会是这样的:

[ {
    "code":"B1182",
    "description":"Tire pressure monitor module",
    "faultInformations":[ {
        "description": "---"
    }
    ,
    {
        "description": "TRUE", "description_eng": "TRUE", "description_fre": "TRUE", "description_ger": "TRUE", "description_spa": "TRUE", "description_ita": "TRUE", "description_tur": "TRUE"
    }
    ],
    "freezeFrames":[],
    "enhancedDtcInfos":[],
    "status":"ACTIVE",
    "system":"MULTIFUNCTION",
    "systemMeta": {
        "systemName": null, "subSystemName": null
    }
    ,
    "description_eng":"Tire pressure monitor module",
    "description_fre":"Module de surveillance de la pression des pneus",
    "description_ger":"Reifendrucküberwachung",
    "description_spa":"Módulo de control de la presión de los neumáticos",
    "description_ita":"Modulo monitor di pressione pneumatico",
    "description_tur":"Lastik basıncı izleme modülü"
}

,
{
    "code":"B124D",
    "description":"Sensor, tyre pressure",
    "faultInformations":[ {
        "description": "---"
    }
    ,
    {
        "description": "TRUE", "description_eng": "TRUE", "description_fre": "TRUE", "description_ger": "TRUE", "description_spa": "TRUE", "description_ita": "TRUE", "description_tur": "TRUE"
    }
    ],
    "freezeFrames":[],
    "enhancedDtcInfos":[],
    "status":"ACTIVE",
    "system":"MULTIFUNCTION",
    "systemMeta": {
        "systemName": null, "subSystemName": null
    }
    ,
    "description_eng":"Sensor, tyre pressure",
    "description_fre":"Capteur, pression des pneus",
    "description_ger":"Sensor Reifendruck",
    "description_spa":"Sensor de presión del neumático",
    "description_ita":"Sensore, pressione pneumatici",
    "description_tur":"Sensör, lastik hava basıncı"
}

]

我想从前面的字符串中提取字段code 及其value

请注意,在此字符串中有两个代码("code":"B1182""code":"B124D"),但这将迭代地运行超过数千个可能存在不同代码号的字符串。

那么,我怎样才能提取这个字符串中的所有代码及其值呢?

【问题讨论】:

  • 这是一个有效的 JSON,你应该使用 JSON 解析器。
  • 试试jsonlite::fromJSON(x)$code

标签: r regex stringr


【解决方案1】:

由于是json字符串,可以使用json解析器解析,例如:jsonlite

如果你没有安装它

install.packages("jsonlite")
library(jsonlite)

out <- fromJSON(x)
out

#    code                  description                                                     faultInformations freezeFrames enhancedDtcInfos status
# 1 B1182 Tire pressure monitor module ---, TRUE, NA, TRUE, NA, TRUE, NA, TRUE, NA, TRUE, NA, TRUE, NA, TRUE         NULL             NULL ACTIVE
# 2 B124D        Sensor, tyre pressure ---, TRUE, NA, TRUE, NA, TRUE, NA, TRUE, NA, TRUE, NA, TRUE, NA, TRUE         NULL             NULL ACTIVE
#          system systemMeta.systemName systemMeta.subSystemName              description_eng                                 description_fre
# 1 MULTIFUNCTION                    NA                       NA Tire pressure monitor module Module de surveillance de la pression des pneus
# 2 MULTIFUNCTION                    NA                       NA        Sensor, tyre pressure                     Capteur, pression des pneus
#          description_ger                                   description_spa                        description_ita              description_tur
# 1 Reifendrucküberwachung Módulo de control de la presión de los neumáticos Modulo monitor di pressione pneumatico Lastik basinci izleme modülü
# 2     Sensor Reifendruck                   Sensor de presión del neumático          Sensore, pressione pneumatici  Sensör, lastik hava basinci

然后选择您想要的任何列,例如:

out[, c("code","description")]

#    code                  description
# 1 B1182 Tire pressure monitor module
# 2 B124D        Sensor, tyre pressure

【讨论】:

    猜你喜欢
    • 2017-12-30
    • 2017-02-17
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多