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