【问题标题】:`fread` with headers with special characters (latin1) and unusual nested quotes带有特殊字符(latin1)和不寻常嵌套引号的标题的`fread`
【发布时间】:2016-04-27 14:43:14
【问题描述】:

我有一个带有嵌套引号的 latin1 编码 csv 文件:

Ort;Stra▒e;Bezeichnung
Vienna;Testgasse 1;"Ministerium ""Pestalozzi"""
Graz;Teststra▒e 3;HS
Salzburg;Beispielstra▒e 9;"NMS ""Die Schlauen"""
Vienna;Wolfgang-Stra▒e 7;"Wirtshaus ""Wien III"""

使用 data.table 1.9.6 中的 fread 在标题中给出错误的特殊字符 (ß),而下面的所有 ß 都是正确的 - 引用的引号保持“”。

dat <- fread("latin1quotedat.csv", encoding = "Latin-1")
dat # wrong header, wrong quotes
       Ort         Stra\xdfe                Bezeichnung
1:   Vienna       Testgasse 1 Ministerium ""Pestalozzi""
2:     Graz      Teststraße 3                         HS
3: Salzburg  Beispielstraße 9       NMS ""Die Schlauen""
4:   Vienna Wolfgang-Straße 7     Wirtshaus ""Wien III""

使用基础 R 中的 read.csv2 一切都符合预期:

dat1 <- read.csv2("latin1quotedat.csv", encoding = "latin1")
dat1 # ok
       Ort            Straße              Bezeichnung
1   Vienna       Testgasse 1 Ministerium "Pestalozzi"
2     Graz      Teststraße 3                       HS
3 Salzburg  Beispielstraße 9       NMS "Die Schlauen"
4   Vienna Wolfgang-Straße 7     Wirtshaus "Wien III"

也许有一个引号选项(虽然我没有找到)。 标题中被误解的特殊字符看起来像一个错误。

可以在此处找到代码和示例 csv:https://github.com/nachti/datatable_test。 克隆存储库并运行latin1quotedat.R

格哈德

【问题讨论】:

  • 是我的疏忽.. 在实现该功能时跳过了标题。你能在项目页面上提交这个吗?谢谢。

标签: r data.table


【解决方案1】:

现在在current devel, v1.9.7 中使用commit f91bba1 修复。来自NEWS

fread() 不遵守标题列的编码。现已修复,#1680。谢谢@nachti。

有了这个,我得到:

names(fread("~/Downloads/latin1quotedat.csv", encoding = "Latin-1"))
# [1] "Ort"         "Straße"      "Bezeichnung"

【讨论】:

  • 感谢阿伦的快速回复!你也有报价的解决方案吗?
  • 解决方案很简单,但很可能在下一个版本中,不确定。
猜你喜欢
  • 2011-02-15
  • 1970-01-01
  • 2011-04-12
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 2018-10-11
  • 1970-01-01
相关资源
最近更新 更多