从字符串中提取单词并将它们移动到数组中

Posted

技术标签:

【中文标题】从字符串中提取单词并将它们移动到数组中【英文标题】: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)应该能够帮助你。 【参考方案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 

【讨论】:

以上是关于从字符串中提取单词并将它们移动到数组中的主要内容,如果未能解决你的问题,请参考以下文章

读取单词并将它们存储到数组中

如何从字符串中提取整个字符串范围的子字符串并将它们放入数组中?

如何从字符串中提取整个字符串范围的子字符串并将它们放在一个数组中?

从文件中读取字符串并使用 Groovy 将它们放入数组中

拆分一个字符串并将其放入两个数组中

从文本文件中读取单词并存储到 C 中的动态数组 Valgrind 错误中