如何删除文本中的某些行?
How to remove certain lines in a text?
data <- "as follows:\n\n YEAS--231\n\n Adams\n Aguilar\n "
我想要以 2 个或更少空白开头的行 space,输出如下:
"as follows:"
并删除以 3 个或更多空格 space 开头的行。
text <- str_split(data,"\n")
“文本”的类型是列表,有没有办法将“文本”转换为字符?或者有其他方法可以得到我的结果吗?
这是 tidyverse 方式:
library(tidyverse)
data <- "as follows:\n\n YEAS--231\n\n Adams\n Aguilar\n "
cat(data)
#> as follows:
#>
#> YEAS--231
#>
#> Adams
#> Aguilar
#>
data %>%
# apply functions on each line
str_split("\n") %>%
simplify() %>%
# lines starting with at least 3 spaces
discard(~ .x %>% str_starts("[ ]{3}")) %>%
# empty lines
discard(~ .x %>% str_trim() == "") %>%
paste0(collapse = "\n") %>%
cat()
#> as follows:
由 reprex package (v2.0.1)
于 2021-09-26 创建
您可以在 '\n'
上拆分字符串,并在 grep
return 上拆分字符串开头少于 3 个空格的字符串。
data <- "as follows:\n\n YEAS--231\n\n Adams\n Aguilar\n "
grep('^\s{3,}', unlist(strsplit(trimws(data), '\n+')), value = TRUE, invert = TRUE)
#[1] "as follows:"
使用stringr
函数-
library(stringr)
library(magrittr)
str_split(trimws(data), '\n+') %>%
unlist() %>%
str_subset('^\s{3,}', negate = TRUE)
data <- "as follows:\n\n YEAS--231\n\n Adams\n Aguilar\n "
我想要以 2 个或更少空白开头的行 space,输出如下:
"as follows:"
并删除以 3 个或更多空格 space 开头的行。
text <- str_split(data,"\n")
“文本”的类型是列表,有没有办法将“文本”转换为字符?或者有其他方法可以得到我的结果吗?
这是 tidyverse 方式:
library(tidyverse)
data <- "as follows:\n\n YEAS--231\n\n Adams\n Aguilar\n "
cat(data)
#> as follows:
#>
#> YEAS--231
#>
#> Adams
#> Aguilar
#>
data %>%
# apply functions on each line
str_split("\n") %>%
simplify() %>%
# lines starting with at least 3 spaces
discard(~ .x %>% str_starts("[ ]{3}")) %>%
# empty lines
discard(~ .x %>% str_trim() == "") %>%
paste0(collapse = "\n") %>%
cat()
#> as follows:
由 reprex package (v2.0.1)
于 2021-09-26 创建您可以在 '\n'
上拆分字符串,并在 grep
return 上拆分字符串开头少于 3 个空格的字符串。
data <- "as follows:\n\n YEAS--231\n\n Adams\n Aguilar\n "
grep('^\s{3,}', unlist(strsplit(trimws(data), '\n+')), value = TRUE, invert = TRUE)
#[1] "as follows:"
使用stringr
函数-
library(stringr)
library(magrittr)
str_split(trimws(data), '\n+') %>%
unlist() %>%
str_subset('^\s{3,}', negate = TRUE)