我有字串,它應該從“隨機”位置分成幾部分。拆分總是從冒號后的下一個逗號開始。
我的想法是找到冒號
stringr::str_locate_all(test, ":") %>%
unlist()
然后找到逗號
stringr::str_locate_all(test, ",") %>%
unlist()
并從那里找出應該拆分的位置,但找不到合適的方法。感覺逗號前的冒號后總是有 6 個字符,但我不能確定整個資料。
這是示例字串:
dput(test)
"AA,KK,QQ,JJ,TT,99,88:0.5083,66,55:0.8303,AK,AQ,AJs,AJo:0.9037,ATs:0.0024,ATo:0.5678"
這是應該的結果
dput(result)
c("AA,KK,QQ,JJ,TT,99,88:0.5083", "66,55:0.8303", "AK,AQ,AJs,AJo:0.9037",
"ATs:0.0024", "ATo:0.5678")
uj5u.com熱心網友回復:
也許我們可以regmatches像下面這樣使用
> regmatches(test, gregexpr("(\\w ,?) :[0-9.] ", test))[[1]]
[1] "AA,KK,QQ,JJ,TT,99,88:0.5083" "66,55:0.8303"
[3] "AK,AQ,AJs,AJo:0.9037" "ATs:0.0024"
[5] "ATo:0.5678"
uj5u.com熱心網友回復:
這是一個選項strsplit- 用新的分隔符替換,后面的數字,后跟.一個或多個數字 ( \\d ) gsub,然后用strsplitin拆分base R
result1 <- strsplit(gsub("([0-9]\\.[0-9] ),", "\\1;", test), ";")[[1]]
-檢查
> identical(result, result1)
[1] TRUE
如果字符數是固定的,請使用正則運算式查看
result1 <- strsplit(test, "(?<=:.{6}),", perl = TRUE)[[1]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/398893.html
上一篇:正則運算式不符合預期模式
下一篇:重命名包含特殊字符的熊貓資料框列
