R:如何将字符串拆分成碎片

问题描述

我正在尝试拆分成吨的字符串,如下所示:

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))

删除未知字符

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

解决方法

你可以试试 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? 之类的字符不会出现在最终输出中。

,

我们可以使用 strsplit 中的 base R

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