r - 如何使用 R 中的 read.table 读取\"双引号转义值

标签 r csv escaping double-quotes

我无法读取包含如下行的文件在 R 中。

"_:b5507F4C7x59005","Fabiana D\"atri"

有什么想法吗?我怎样才能让 read.table 理解\"是引号的转义符?

干杯,
亚历山大

最佳答案

在我看来 read.table/read.csv 无法处理 转义引号。

...但我想我有一个(丑陋的)解决方法,灵感来自@nullglob;

  • 首先读取没有引号字符的文件。
    (这不会处理嵌入式 ,,正如@Ben Bolker 指出的那样)
  • 然后遍历字符串列并删除引号:

  • 测试文件如下所示(我添加了一个非字符串列以进行良好测量):
    13,"foo","Fab D\"atri","bar"
    21,"foo2","Fab D\"atri2","bar2"
    

    这是代码:
    # Generate test file
    writeLines(c("13,\"foo\",\"Fab D\\\"atri\",\"bar\"",
                 "21,\"foo2\",\"Fab D\\\"atri2\",\"bar2\"" ), "foo.txt")
    
    # Read ignoring quotes
    tbl <- read.table("foo.txt", as.is=TRUE, quote='', sep=',', header=FALSE, row.names=NULL)
    
    # Go through and cleanup    
    for (i in seq_len(NCOL(tbl))) {
        if (is.character(tbl[[i]])) {
            x <- tbl[[i]]
            x <- substr(x, 2, nchar(x)-1) # Remove surrounding quotes
            tbl[[i]] <- gsub('\\\\"', '"', x) # Unescape quotes
        }
    }
    

    然后输出是正确的:
    > tbl
      V1   V2          V3   V4
    1 13  foo  Fab D"atri  bar
    2 21 foo2 Fab D"atri2 bar2
    

    关于r - 如何使用 R 中的 read.table 读取\"双引号转义值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7066664/

    相关文章:

    r - ggplot2 道奇重叠 - 保留每个元素的宽度

    r - R's lubridate 中的独家时间间隔

    r - 有条件地替换 R 中的分类值

    mysql - 使用 MySQL 在 CSV 中搜索

    bash - 如何在 Bash 中构造变量名?

    R - 计算所有组合

    python - 如何查找制表符分隔文件中的列数

    php - 数组到 CSV 导出功能在 WordPress 插件中面临问题

    逃避角色重新研究

    javascript - 分割一个可以在其中转义分隔符的字符串