gpt4 book ai didi

r - (在 R 中)如何在保留缩写的情况下将 "WeLiveInCA"之类的字符串中的单词按标题大小写拆分为 "We Live In CA"?

转载 作者:行者123 更新时间:2023-12-02 00:53:45 24 4
gpt4 key购买 nike

(在 R 中)如何在不拆分缩写的情况下按标题大小写将字符串中的单词拆分为“We Live In CA”?

我知道如何在每个大写字母处拆分字符串,但这样做会拆分首字母缩写/缩写,例如 CAUSSR 甚至 U.S.A.,我需要保留它们。

所以我在想某种逻辑类型,例如如果字符串中的单词不是首字母缩写词,则用空格分隔单词,其中小写字符后跟大写字符

我下面的代码片段用大写字母拆分带空格的单词,但它打破了像 CA 这样的首字母缩写词,不合需要地变成了 C A

s <- "WeLiveInCA"
trimws(gsub('([[:upper:]])', ' \\1', s))
# "We Live In C A"

或者另一个例子...

s <- c("IDon'tEatKittensFYI", "YouKnowYourABCs")
trimws(gsub('([[:upper:]])', ' \\1', s))
# "I Don't Eat Kittens F Y I" "You Know Your A B Cs"

我想要的结果是:

"We Live In CA"
#
"I Don't Eat Kittens FYI" "You Know Your ABCs"

但这需要广泛适用(不仅仅是我的例子)

最佳答案

尝试使用基础 R gregexpr/regmatches

s <- c("WeLiveInCA", "IDon'tEatKittensFYI", "YouKnowYourABCs")
regmatches(s, gregexpr('[[:upper:]]+[^[:upper:]]*', s))
#[[1]]
#[1] "We" "Live" "In" "CA"
#
#[[2]]
#[1] "IDon't" "Eat" "Kittens" "FYI"
#
#[[3]]
#[1] "You" "Know" "Your" "ABCs"

解释。

  1. [[:upper:]]+ 匹配一个或多个大写字母;
  2. [^[:upper:]]* 匹配除大写字母外的零次或多次出现。
  3. 按顺序,这两个正则表达式匹配以大写字母开头后跟其他内容的单词。

关于r - (在 R 中)如何在保留缩写的情况下将 "WeLiveInCA"之类的字符串中的单词按标题大小写拆分为 "We Live In CA"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55873191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com