我想检索字符串中连续空格的序列。喜欢:
mystring="lalalal lalalal lalala lalalala "
retrieve_sequence_of_consecutive_blanks(mystring)
[1] 2 1 3 1
实际上,我有一个解决方案,用这个
sequence_of_blanks=function(vectors_of_strings){
tokens=strsplit(x = mystring,split = "",fixed = TRUE)
sequence=lapply(X = tokens,FUN = rle)
resultats=lapply(sequence, function(item){
resultats=item$lengths[which(item$values==" ")]
})
}
我的问题是关于性能,您认为是否有更好的方法来做到这一点? 正则表达式解决方案怎么样? Python 解决方案怎么样?
最佳答案
您可以匹配所有空间 block 并获取它们的长度,例如
library(stringr)
nchar(unlist(str_extract_all(mystring, " +")))
或者基本 R 等价物:
nchar(unlist(regmatches(mystring, gregexpr(" +", mystring))))
两者产量
[1] 2 1 3 1
在Python中,你可以使用
[x.count(" ") for x in re.findall(" +", mystring)]
请参阅Python demo
如果您打算计算任何空格,请将文字空格替换为 \s
。根据您的进一步要求进行调整。
关于r - 用 R 计算字符串中的空格序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49489414/