用R中的装饰物简化字符

Simplifying characters with ornaments in R

我有一些我在 Spotify 中合作的音乐艺术家的名字 API。由于字符的重音,我在处理某些字符串时遇到了一些问题。我对字符编码了解不多

我将在下面提供更多上下文,但本质上我想知道 R 中是否有一种方法可以 "simplify" 带有装饰物的字符。

基本上,我感兴趣的是是否有一个函数将 c("ë", "ö") 作为输入,return c("e", "o"),从字符中删除装饰。


由于 API 身份验证的问题,我认为我无法创建可重现的示例,但在某些情况下,当我尝试 运行:

artistName <- "Tiësto"
GET(paste0("https://api.spotify.com/v1/search?q=", 
           artistName,
           "&type=artist"), 
    config(token = token))

以下内容被发送到 API:

https://api.spotify.com/v1/search?q=Tiësto&type=artist

返回 400 bad request 错误。我正在尝试更改传递给 GET 函数的字符串,以便获得一些有用的输出。

编辑:我不是在寻找 gsub 类型的解决方案,因为这取决于我对可能出现在我的数据中的各种重音字符的预测。我很感兴趣是否已经有一个函数可以在不同的字符编码之间进行这种转换。

根据 this question 的答案,您可以这样做:

artistName <- "Tiësto"

removeOrnaments <- function(string) {
  chartr(
    "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ",
    "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy",
    string
  )
}

removeOrnaments(artistName)

# [1] "Tiesto"

这是我找到的,可能对你有用。更简单方便地应用于任何形式的数据。

> artistName <- "Tiësto"
> iconv(artistName, "latin1", "ASCII//TRANSLIT")
[1] "Tiesto"