首页 > 解决方案 > 如何将 unicode 的网络抓取数据转换为英语

问题描述

我已经从网上抓取了数据,它的输出是 unicode,如评论中所示

<U+0907><U+0928><U+094D><U+0938><U+093E><U+0907><U+0915><U+094D><U+0932><U+094B> <U+092A><U+0940><U+0921><U+093F><U+092F><U+093E> <U+092C><U+094D><U+0930><U+093F> <U+091F><U+0948><U+0928><U+093F><U+0915><U+093E>

现在如何使用 R 将这些数据翻译成英文

<U+0907><U+0928><U+094D><U+0938><U+093E><U+0907><U+0915><U+094D><U+0932><U+094B> <U+092A><U+0940><U+0921><U+093F><U+092F><U+093E> <U+092C><U+094D><U+0930><U+093F> <U+091F><U+0948><U+0928><U+093F><U+0915><U+093E>

标签: rweb-scrapingunicode

解决方案


您的 dput 已损坏。我仍在尝试重现您的数据。并提出解决方案。

library(stringi)
library(stringr)

a <- structure(list(ID = 7357, Title = structure(1L, .Label = "<U+0905><U+092C> <U+0928><U+0939><U+0940><U+0902> <U+091B><U+092A><U+0947><U+0917><U+0940> <U+0907><U+0928><U+094D><U+0938><U+093E><U+0907><\
U+0915><U+094D><U+0932><U+094B><U+092A><U+0940><U+0921><U+093F><U+092F><U+093E> <U+092C><U+094D><U+0930><U+093F><U+091F><U+0948><U+0928><U+093F><U+0915><U+093E>", class = "factor")))
titles <- as.character(a$Title)
titles_in_unicode <- lapply(
    unlist(strsplit(titles,' ')),
    FUN = function(words) {
        paste(stri_unescape_unicode(gsub("U+",
                                   "\\u",
                                   unlist(str_extract_all(words,
                                                          "U\\+([0-9]?)+([A-Z]?)+")),
                                   fixed=TRUE)),collapse='')
    }
)

输出

!> titles_in_unicode
 [[1]]
 [1] "अब"

 [[2]]
 [1] "नहीं"

 [[3]]
 [1] "छपेगी"

 [[4]]
 [1] "इन्साइक्लोपीडिया"

 [[5]]
 [1] "ब्रिटैनिका"

推荐阅读