【问题标题】:Extract words from a string and move them in an array从字符串中提取单词并将它们移动到数组中
【发布时间】:2017-10-01 00:24:23
【问题描述】:

我想从R中的以下字符串中提取一些单词。(我将它们加粗以变得易于理解)然后我需要将它们移动到一个数组中。

{\"AN\":\"**SC ANA**\",\"LOCC\":\"**Berlin**\"}

例如在上面的字符串中,我需要 SC ANA 和 Berlin 存储在一个数组中。

对我来说有两个限制: 1- 此字段的数量可能会发生变化,例如:

{\"AN\":\"**SC ANA**\",\"LOCC\":\"**Berlin**\",\"Nam\":\"**Alice**\"}

2- 每个单词的长度也可能会改变。例如:

{\"AN\":\"**Bsc ANT**\",\"LOCC\":\"**Berlin LC**\",\"Nam\":\"**Alice JHV**\"}

谁能帮帮我?

【问题讨论】:

  • 您绝对应该在这里使用 JSON 解析器,而不是正则表达式,而不是字符串提取。我不知道确切的 R 库,但其他人(也许 @akrun)应该能够帮助你。

标签: r string extraction


【解决方案1】:

这是 JSON。您可以使用 jsonlite 包而不是手动处理字符串。例如:

library(jsonlite)
fromJSON('{\"AN\":\"SC ANA\",\"LOCC\":\"Berlin\"}')
# $AN
# [1] "SC ANA"
# 
# $LOCC
# [1] "Berlin"

【讨论】:

  • 谢谢,这人太棒了!!只是一个问题,输出是单个字符串还是两个单个字符串?我的意思是,例如如何将“SC ANA”和“Berline”放在不同的变量或数组中。
  • 这里的结果是一个命名列表。请参阅help("fromJSON") 以更好地控制输出。 as.data.frame(fromJSON('{\"AN\":\"SC ANA\",\"LOCC\":\"Berlin\"}')) 会给你一个单行数据框。通常您可能希望一次解析整个 JSON 文件,而不是逐个字符串,并调整 fromJSON() 的参数以获得所需的输出
【解决方案2】:

字符串为 json 格式,因此您可以执行以下操作:

require(jsonlite)
require(dplyr)
str <- "{\"AN\":\"SC ANA\",\"LOCC\":\"Berlin\"}"

fromJSON(str) %>% unlist 

【讨论】:

    猜你喜欢
    • 2018-01-01
    • 2018-07-30
    • 2018-09-02
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    相关资源
    最近更新 更多