【问题标题】:R: How to split string into piecesR:如何将字符串分成几部分
【发布时间】:2020-12-28 06:16:46
【问题描述】:

我正在尝试拆分大量字符串,如下所示:

x = "�\001�\001�\001�\001�\001\002CN�\001\bShandong�\001\004Zibo�\002$ABCDEFGHIJK�\002\aIMG_HAS�\002�\002�\002�\002�\002�\002�\002�\002\02413165537405763268743�\002\001�\002�\002�\002�\003�\003�\003����\005�\003�\003�\003�\003"

分成四块

'CN', 'Shandong', 'Zibo', 'ABCDEFGHIJK'

我试过了

stringr::str_split(x, '\\00.')

输出原点x。 还有,

trimws(gsub("�\\00?", "", x, perl = T))

只删除未知字符

有人可以帮我解决这个问题吗?感谢您这样做。

【问题讨论】:

    标签: r strsplit


    【解决方案1】:

    你可以试试str_extract_all

    stringr::str_extract_all(x, '[A-Za-z_]+')[[1]]
    [1] "CN"          "Shandong"    "Zibo"        "ABCDEFGHIJK" "IMG_HAS"
    

    使用基础 R:

    regmatches(x, gregexpr('[A-Za-z_]+', x))[[1]]
    

    这里我们提取所有带有大写、小写或下划线的单词。其他所有内容都将被忽略,因此最终输出中不会出现像 �\\00? 这样的字符。

    【讨论】:

    • 你太棒了!有用。你能解释一下代码吗?
    • 我添加了一些代码解释。希望对您有所帮助。
    【解决方案2】:

    我们可以从base R使用strsplit

    setdiff(strsplit(x, "[^A-Za-z]+")[[1]], "")
    #[1] "CN"          "Shandong"    "Zibo"        "ABCDEFGHIJK" "IMG"         "HAS"  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 2015-05-30
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      相关资源
      最近更新 更多