我想基于存储为.csv文件的数据进行一些文本分析,但是在使用readtext
包进行编码时遇到了问题。
为了说明我的问题,我在Excel中创建了以下文件,并将其另存为.csv(UTF-8):
|---------------------|------------------|
| c_text | c_id |
|---------------------|------------------|
| München | aa |
|---------------------|------------------|
| Laïrie | bb |
|---------------------|------------------|
| Mános | cc |
|---------------------|------------------|
然后,我将数据加载到R中,如下所示:
text_raw <- readtext::readtext("path/test_encoding.csv"),
encoding = "UTF-8",
text_field = "c_text")
text_raw
输出为:
readtext object consisting of 3 documents and 1 docvar.
# Description: data.frame [3 x 3]
doc_id text c_id
<chr> <chr> <chr>
1 test_encoding.csv.1 "\"München\"..." aa
2 test_encoding.csv.2 "\"Laïrie\"..." bb
3 test_encoding.csv.3 "\"Mános\"..." cc
如果我随后将对象写入.csv文件,则输出将再次不同。命令write.csv(text_raw, file = "path", fileEncoding = "UTF-8")
产生以下结果:
München
Laïrie
Mános
一些其他信息:
我正在使用Windows计算机,而我的sys.getLocale()
是English_United Kingdom.1252
(显然,它不能更改为UTF-8)
即使我在readtext()
函数中指定了其他编码(例如,“ utf8”,“ Windows-1252”,“ ISO8859-1”),输出也不会改变。但是,鉴于我将测试文件显式保存为utf-8,所以我不知道发生了什么。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
我创建了一个拉取请求,因为这是readtext
包中的一个问题:
https://github.com/quanteda/readtext/pull/151
在此PR被接受或问题解决之前,您可以使用我的叉子解决此问题:
remotes::install_github("JBGruber/readtext")
PR已获得批准,因此可以通过以下方式安装新的软件包版本:
remotes::install_github("quanteda/readtext")
然后它应该起作用:
df <- structure(list(c_text = structure(c(3L, 1L, 2L), .Label = c("Laïrie",
"Mános", "München"), class = "factor"), c_id = structure(1:3, .Label = c("aa",
"bb", "cc"), class = "factor")), class = "data.frame", row.names = c(NA,
-3L))
write.csv(df,
"~/test.csv",
row.names = FALSE,
fileEncoding = "UTF-8")
text_raw <- readtext::readtext("~/test.csv",
encoding = "UTF-8",
text_field = "c_text")
text_raw
#> readtext object consisting of 3 documents and 1 docvar.
#> # Description: data.frame [3 x 3]
#> doc_id text c_id
#> <chr> <chr> <chr>
#> 1 test.csv.1 "\"München\"..." aa
#> 2 test.csv.2 "\"Laïrie\"..." bb
#> 3 test.csv.3 "\"Mános\"..." cc
由reprex package(v0.2.1)于2019-05-02创建