簡體   English   中英

使用R將具有全部CAPS的單詞除外,將句子中所有字母從大寫轉換為小寫

[英]Convert all letters from uppercase to lowercase in a sentence except words with all CAPS using R

我想將我的文本數據框轉換為小寫字母,但我不想轉換所有大寫字母的單詞。 例如,如果有一個類似

“我的朋友是研究中的好東西”

這樣的輸出應該像

“我的朋友ENRIQUE學習不好”

它將所有帶有大寫字母的單詞轉換為小寫。 我需要ar函數來完成此任務。

您可以使用gsub和(與perl兼容)正則表達式進行此操作。

gsub("(\\b\\w*[a-z]\\w*\\b)", "\\L\\1", String, perl=TRUE)
"my friend ENRIQUE is not good in studies"

放置\\\\b單詞邊界可確保它對單獨的單詞起作用。 [az]選擇包含至少一個小寫字母的單詞。 [az]之前和之后的\\\\w*匹配任何數量(包括零個)的“單詞字符”,即字母或數字。 替換模式中的\\\\L轉換為小寫。

我們可以將字符串分成不同的單詞,然后找出包含任何小寫字母[az]單詞,然后將該單詞轉換為小寫字母。

word_vec <- strsplit(x, " ")[[1]]
ifelse(grepl('[a-z]', word_vec), tolower(word_vec), word_vec)

#[1] "my"  "friend"  "ENRIQUE" "is"  "not"  "good"  "in"  "studies"

為了使它成為單個字符串,我們可以使用帶有空collapse參數的paste0

paste0(ifelse(grepl('[a-z]', word_vec), tolower(word_vec), word_vec), collapse = " ")

#[1] "my friend ENRIQUE is not good in studies"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM