Изменение регистра одного символа в середине строки - PullRequest
0 голосов
/ 05 августа 2020

Очищаю набор данных. Одна из трудностей заключается в том, что в некоторых строках имена борцов объединены с названиями борцовских компаний без пробелов.

Date        Match
2001-06-16  American Dragon Defeats Jerry LynnMCW
1943-10-07  Lou Thesz Defeats Jack McDonaldGAC 
1955-03-25  Buddy Rogers Defeats Danny McShain 

Чтобы исправить это, я использую следующую строку, чтобы удалить название компании, избавившись от заглавной буквы буква и все, что следует за ней, если эта заглавная буква следует за строчной буквой:

data_set_2 <- data_set %>%
mutate(match = str_remove(match, "(?<=[:lower:])[:upper:].*")) 

Однако в случае имен с несколькими заглавными буквами, таких как McDonald, результат выглядит следующим образом:

date        match
2001-06-16  American Dragon Defeats Jerry Lynn
1943-10-07  Lou Thesz Defeats Jack Mc
1955-03-25  Buddy Rogers Defeats Danny Mc

Чтобы исправить это, я попытался сделать так, чтобы в именах была только одна заглавная буква, пытаясь уменьшить заглавную букву после Mc:

data_set_2 <- data_set %>%
mutate(match = str_to_title(match, "(?<=Mc)[:upper:]")) 

Однако ниже результат:

Date        Match
2001-06-16  American Dragon Defeats Jerry Lynnmcw
1943-10-07  Lou Thesz Defeats Jack Mcdonaldgac 
1955-03-25  Buddy Rogers Defeats Danny Mcshain 

Как видите, он понижает все, а не изолирует нижнее только до одной буквы. Я пытаюсь придумать способ изолировать одного персонажа, но ничего из того, что я пробовал, не помогло. Любые идеи приветствуются. Спасибо!

1 Ответ

0 голосов
/ 05 августа 2020

Если названия компаний полностью заглавные, как в ваших первых двух примерах, вы можете заменить пустую строку, соответствующую следующему регулярному выражению, пробелом: (?<=[a-z])(?=[A-Z]{2}). (?<=[a-z]) - это положительный просмотр назад, требующий, чтобы совпадению предшествовала строчная буква. (?=[A-Z]{2}) - это положительный просмотр вперед, требующий, чтобы после совпадения следовали две заглавные буквы. Если второй символ названия компании может быть в нижнем регистре, нет логического способа определить, является ли подстрока просто именем или именем, за которым следует название компании (например, MacDonald).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...