如何在两个特定字符之间拆分字符串 (R)
How to split strings between two specific characters (R)
我希望将一些抓取的期刊出版数据整齐地分成几列(即作者、标题、期刊等)。我大部分时间都这样做了,但是我被困在下面的条目中,该条目在标题中间输入了 \n 行。
structure(list(value = " What wrist should you wear your actigraphy device on? Analysis of dominant vs.\n non-dominant wrist actigraphy for measuring sleep in healthy adults. \n Sleep Science. \n 10:132-135.\n 2017\n\n Full text if available"), row.names = c(NA,
-1L), class = c("tbl_df", "tbl", "data.frame"))
为了解决这个问题,我不想简单地在 \n 行拆分,而是想在 \n 行和大写字母之间的位置拆分字符串(这样标题就不会拆分为两个单独的列)。
我在 \n 行分割的原始代码简单地使用:
str_split_fixed(x,"\n", 2)[ ,2]
我尝试了多种使用正则表达式的组合 lookahead/behind,但无法弄清楚如何拆分两个字符并将这些字符包含在两边。
您可以使用:
strsplit(df$value, '\n\s+(?=[A-Z])', perl = TRUE)
#[[1]]
#[1] " What wrist should you wear your actigraphy device on? Analysis of dominant vs.\n non-dominant wrist actigraphy for measuring sleep in healthy adults. "
#[2] "Sleep Science. \n 10:132-135.\n 2017"
#[3] "Full text if available"
这将在换行符处拆分文本,后跟一个或多个空格,再后跟一个大写字母。我们对大写字母使用正前瞻正则表达式,以便它保留在字符串中。
我希望将一些抓取的期刊出版数据整齐地分成几列(即作者、标题、期刊等)。我大部分时间都这样做了,但是我被困在下面的条目中,该条目在标题中间输入了 \n 行。
structure(list(value = " What wrist should you wear your actigraphy device on? Analysis of dominant vs.\n non-dominant wrist actigraphy for measuring sleep in healthy adults. \n Sleep Science. \n 10:132-135.\n 2017\n\n Full text if available"), row.names = c(NA,
-1L), class = c("tbl_df", "tbl", "data.frame"))
为了解决这个问题,我不想简单地在 \n 行拆分,而是想在 \n 行和大写字母之间的位置拆分字符串(这样标题就不会拆分为两个单独的列)。
我在 \n 行分割的原始代码简单地使用:
str_split_fixed(x,"\n", 2)[ ,2]
我尝试了多种使用正则表达式的组合 lookahead/behind,但无法弄清楚如何拆分两个字符并将这些字符包含在两边。
您可以使用:
strsplit(df$value, '\n\s+(?=[A-Z])', perl = TRUE)
#[[1]]
#[1] " What wrist should you wear your actigraphy device on? Analysis of dominant vs.\n non-dominant wrist actigraphy for measuring sleep in healthy adults. "
#[2] "Sleep Science. \n 10:132-135.\n 2017"
#[3] "Full text if available"
这将在换行符处拆分文本,后跟一个或多个空格,再后跟一个大写字母。我们对大写字母使用正前瞻正则表达式,以便它保留在字符串中。