【问题标题】:removing unicode characters from data frame in r从r中的数据框中删除unicode字符
【发布时间】:2019-10-30 17:44:06
【问题描述】:

我有一个包含波斯语字符的大型数据框,我使用以下代码将其导入 r:

Sys.setlocale(locale = "persian")
dt <- read.csv("data.csv",encoding="UTF-8")

我的dt是这样的:

id         title
3376971    چوب شور آلبينا شيرين عسل <U+06F3><U+06F0> گرمي
3376989    ويفر رنگارنگ مينو <U+06F1><U+06F4>.<U+06F5> گرمي
3376990    کوکي مينو <U+06F3><U+06F0> گرمي
3376991    بيسکويت هاي باي شيرين عسل <U+06F3><U+06F8> گرمي
3376992    شکلات توريستي آناتا <U+06F2><U+06F8> گرمي
3376993    اسنک مغزدار شکلاتي شونيز <U+06F1><U+06F7> گرمي
3376994    شکلات فندقي آناتا <U+06F1><U+06F8> گرمي
3376995    نان روغني شيرين عسل <U+06F5><U+06F0> گرمي
3376996    بيسکويت هاي باي شيرين عسل <U+06F5><U+06F7> گرمي

我想删除一些 unicode,我已经尝试过:

dt<- cbind.data.frame(dt$id,gsub("<.+>", "", dt$title)
dt<- cbind.data.frame(dt$id,gsub("\\S+\\s+|-", "", dt$title)
dt<- cbind.data.frame(dt$id,gsub("^\\s*<U\\+\\w+>\\s*", "", dt$title)
dt<- cbind.data.frame(dt$id,gsub("\\<U[^\\>]*\\>", "", dt$title)  
dt<- cbind.data.frame(dt$id,gsub(""▼|▲"", "", dt$title)  

但它们都不起作用

我也试过这个:

dt$title<-gsub("^\\s*<U\\+\\w+>\\s*", "", dt$title)

但我收到了这个错误:

Error in `$<-.data.frame`(`*tmp*`, title, value = character(0)) : 
replacement has 0 rows, data has 66366

【问题讨论】:

  • 试试transform(title = stringi::stri_trans_general(title, "latin-ascii"))
  • 该字符串实际上可能并不包含像&lt;U+06F3&gt; 这样的括号元素,这些只是 R 不知道如何显示的 unicode 字符,因此它会向您显示代码。如果将数据框写入 CSV,您会看到什么?
  • @Marius,我试过 write.csv 我看到的正是问题中显示的 dt
  • @julien,我试过了,但它不起作用我收到了这个错误:Error in data.frame(_data) : argument "_data" is missing, with no default
  • @Marius, @julien,我注意到在 R 控制台中,Unicode 的显示方式不同:` چوب شور آلبینا شیرین عسل ۳۰ گرمی `

标签: r unicode utf-8


【解决方案1】:

我注意到在 R 控制台中我的数据显示如下:

چوب شور آلبینا شیرین عسل ۳۰ گرمی

Unicode 已显示为波斯数字,我试过了,它奏效了:

dt$title<-gsub("[۰-۹]+", "", dt$title)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2021-10-05
    • 2011-03-28
    • 2014-12-06
    相关资源
    最近更新 更多