You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

R语言中用strsplit按竖线分隔符分割字符串遇异常问题

解决strsplit按竖线"|"分割时拆分每个字符的问题

哦这个坑我踩过好多次!你遇到的问题根源在于**|是正则表达式里的特殊字符**,而strsplit()split参数默认是按正则模式解析的。

为什么会拆分每个字符?

在正则表达式中,|表示“逻辑或”的意思,比如a|b会匹配a或者b。当你直接传入"|"作为分隔符时,正则引擎会把它理解为“匹配空字符串 OR 空字符串”,相当于在每个字符的前后都匹配一次分隔符,自然就把每个字符都拆分开了。

两种正确的解决方法

方法1:使用fixed=TRUE强制字面匹配

告诉strsplit()不要把分隔符当成正则,而是直接匹配字面意义的竖线:

line <- "2015-07-22|06:43:44+0000|37e86ffa-dd28-450d-aa9a-3d6776a31337|dummy|t1|USA-4DTV-DEFAULT|USA|MV000375100000|Striking Distance|MOVIE|TMS|VIEWED_MOVIE|NA|NA|NA|NA|**"
split_result <- strsplit(line, "|", fixed = TRUE)[[1]]
# 查看结果
split_result

方法2:转义正则特殊字符

在R中,要在正则里表示字面的|,需要用双反斜杠\\转义(因为单个反斜杠在R字符串里是转义符本身):

split_result <- strsplit(line, "\\|")[[1]]

小提示

如果你的分隔符是普通符号(比如逗号、竖线、点号这类),优先用fixed=TRUE,这样不仅避免正则的坑,运行效率也会更高哦~

内容的提问来源于stack exchange,提问作者Sarang Manjrekar

火山引擎 最新活动