【问题标题】:Replacement of big and small letters in R(gsub)R(gsub)中大小写字母的替换
【发布时间】:2016-11-03 13:55:56
【问题描述】:

我想替换文本中的所有变音符号(德语)。这是我的文字的一部分:

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 来做到这一点?

【问题讨论】:

标签: r regex


【解决方案1】:

最简单的方法,特别是如果你想有选择性的话,就是把它分开:

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'))

【讨论】:

    【解决方案2】:

    这是一种使用 Unicode 智能 stringi 包的更快、更简洁的方法:

    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"
    

    vectorize_all = FALSE 表示您的替换是逐个元素的,并且将其作为固定模式替换使其最快。

    【讨论】:

      猜你喜欢
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 2013-02-04
      相关资源
      最近更新 更多