【问题标题】:Parsing brackets and quotes解析括号和引号
【发布时间】:2019-06-07 14:40:48
【问题描述】:

我有一个字符串向量,我想解析它。但是,括号与引号的组合使这变得非常复杂。我想最好用stringr 解决这个问题(不是必需的)

x = c("[\"DER001_A375_96H:TRCN0000052583:-666\"]", "[\"TRCN0000052583\"]", "[\"AAK1\",\"AARS\"]", "[\"A375\"]", "-6.7389873 ... 4.6063291") 

> x
[1] "[\"DER001_A375_96H:TRCN0000052583:-666\"]" "[\"TRCN0000052583\"]"                     
[3] "[\"AAK1\",\"AARS\"]"                       "[\"A375\"]"                               
[5] "-6.7389873 ... 4.6063291"    

预期结果:

DER001_A375_96H:TRCN0000052583:-666
TRCN0000052583
AAK1
AARS
A375
6.7389873
4.6063291

【问题讨论】:

  • 为什么数据是这样的?它是否从某一时刻开始作为 JSON 数据?您确定不能在管道的上游生成更清晰的数据吗?这看起来真是一团糟。
  • 这是 Shiny 的输出,我无法更改。见这里:stackoverflow.com/questions/52858889/…

标签: r regex stringr


【解决方案1】:

用逗号替换每个出现的... 并删除所有出现的方括号。 (注意[...]定义了一个字符类,如果类中的第一个字符是],那么它被认为是类的一部分,而不是终止]。)最后,读入使用scan。没有使用任何包。

scan(text = gsub('[][]', '', gsub(" ... ", ",", x, fixed = TRUE)), 
  sep = ",", what = "", quiet = TRUE)

给予:

[1] "DER001_A375_96H:TRCN0000052583:-666" "TRCN0000052583"                     
[3] "AAK1"                                "AARS"                               
[5] "A375"                                "-6.7389873"                         
[7] "4.6063291"                     

【讨论】:

    【解决方案2】:

    借助 SO(用于解析字符串)和 http://edrub.in/CheatSheets/cheatSheetStringr.pdf

    x = c("[\"DER001_A375_96H:TRCN0000052583:-666\"]", 
          "[\"TRCN0000052583\"]", "[\"AAK1\",\"AARS\"]", 
          "[\"A375\"]", "-6.7389873 ... 4.6063291") 
    library("dplyr", quietly = TRUE, warn.conflicts = FALSE)
    x1 <- x %>% 
            stringr::str_remove_all(pattern = "\"" ) %>% 
            stringr::str_remove_all(pattern = "\\[" ) %>% 
            stringr::str_remove_all(pattern = "\\]" )
    
    x2 <- unlist ( strsplit(x1, split = ",") )
    x3 <- unlist ( strsplit(x2, split = "\\.\\.\\.") )
    x3
    #> [1] "DER001_A375_96H:TRCN0000052583:-666"
    #> [2] "TRCN0000052583"                     
    #> [3] "AAK1"                               
    #> [4] "AARS"                               
    #> [5] "A375"                               
    #> [6] "-6.7389873 "                        
    #> [7] " 4.6063291"
    

    reprex package (v0.2.1) 于 2019-06-07 创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-06
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多