在R

时间:2017-08-15 13:27:11

标签: r utf-8 iso-8859-1

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

我将在下面进一步提供更多上下文,但基本上我想知道R中是否有一种方法可以用饰物“简化”字符。

基本上,我感兴趣的是,如果有一个函数将c("ë", "ö")作为输入,并返回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类型的解决方案,因为它依赖于我预期可能出现在我的数据中的各种重音字符。我很感兴趣是否已经有一个函数可以在不同的字符编码之间进行这种翻译。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

artistName <- "Tiësto"

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

removeOrnaments(artistName)

# [1] "Tiesto"