我想在文本中替换所有的变音符号(德语)。以下是我的文字的一部分:
temp.RData enthalten die täglichen Niederschlagsmengen\nund die stündlichen Durchschnittstemperaturen von 1.7.2016 (1 Uhr) bis\n26.9.2016
所以我想用英语类似物(ae,ue,oe)替换ä,ü和ö等所有字母
这是我的代码:
text <- gsub(pattern = '[Ää]',replacement = "ae",text)
text <- gsub(pattern = '[Üü]',replacement = "ue",text)
text <- gsub(pattern = '[Öö]',replacement = "oe",text)
一切都运行正常,除了变形符号(Ä,Ü,Ö)被类似物取代,类似物从小写字母开始。但我想用Ae(不是ae)代替Ä。如何仅在R?
中使用regex
来执行此操作
答案 0 :(得分:2)
最简单的方法,特别是如果你想要有选择性,就是把它分开:
text <- gsub(pattern = '[ä]',replacement = "ae",text)
text <- gsub(pattern = '[ü]',replacement = "ue",text)
text <- gsub(pattern = '[ö]',replacement = "oe",text)
text <- gsub(pattern = '[Ä]',replacement = "Ae",text)
text <- gsub(pattern = '[Ü]',replacement = "Ue",text)
text <- gsub(pattern = '[Ö]',replacement = "Oe",text)
如果您想要更有效的方式,可以使用stringr
library(stringr)
str_replace_all(text, c('ä' = 'ae', 'ë' = 'ee', 'ï' = 'ie', 'ö' = 'oe',
'ü' = 'ue', 'Ä' = 'Ae', 'Ë' = 'Ee', 'Ï' = 'Ie',
'Ö' = 'Oe', 'Ü' = 'Ue'))
答案 1 :(得分:0)
使用Unicode-smart stringi 包时,这是一种更快速,更简约的方法:
var result = db.Notes.GroupBy(n => n.PersonId)
.Select(g => new NoteGrp
{
PersonID = g.Key,
Notes = g.Select(x => x.NoteText)
});
public class NoteGrp
{
public int PersonID { get; set; }
public IEnumerable<string> Notes { get; set; }
...
public string Note
{ get { return string.Join(", ", Notes); } }
}
txt <- "A: Äbel bäbel, O: Öber öber, U: Über über gemütlich"
stringi:: stri_replace_all_fixed(txt,
c("ä", "ü", "ö", "Ä", "Ü", "Ö"),
c("ae", "ue", "oe", "Ae", "Ue", "Oe"),
vectorize_all = FALSE)
## [1] "A: Aebel baebel, O: Oeber oeber, U: Ueber ueber gemuetlich"
表示您的替换是逐个元素的,并且使其成为固定模式替换使其尽可能快。