fread在不必要时转义引号
我正在使用fread在不必要时转义引号,r,csv,escaping,fread,quote,R,Csv,Escaping,Fread,Quote,我正在使用fread函数读取带引号字段的csv文件。在某些字段中会出现转义引号(\“)。我不明白为什么fread函数会转义这些已经转义的引号 我用一个简单的例子再现了这种行为。我创建了一个文件,其中只有一行和一个字段: "Hello \"World\" " 如果我运行以下R命令: table <- fread(input = "/tmp/quoteprova.csv", header=FALSE, sep = "\t") 相反,我期望的结果是: V1 1
fread
函数读取带引号字段的csv文件。在某些字段中会出现转义引号(\“
)。我不明白为什么fread
函数会转义这些已经转义的引号
我用一个简单的例子再现了这种行为。我创建了一个文件,其中只有一行和一个字段:
"Hello \"World\" "
如果我运行以下R命令:
table <- fread(input = "/tmp/quoteprova.csv", header=FALSE, sep = "\t")
相反,我期望的结果是:
V1
1: Hello \"World\"
我是否缺少指定一些选项以获得预期的行为?您正在获得所需的。
\\“
是两个字符:一个普通字符\
和一个“
。因为\
用于转义特殊字符,\*
将被解释为使用\
转义的特殊字符。在附加的\
(第一个)之前,这里将告诉您,第二个\
不用于转义“
,应按原样处理
请参见此示例:
> nchar('\\"')
[1] 2
> nchar('\"')
[1] 1
也谢谢你的回答。但我不同意。如果fread正在读取一个csv文件,其中字段被双引号括起来,那么应该预期在该csv文件中,字段内的双引号已经转义(否则它无法正确读取该文件)因此,fread函数没有必要转义双引号time@rlar,原始答案中的链接不正确。请查看更新的链接。我们应该区分“字符串”和“字符串表示”。
fread
没有再次转义它。而是R转义“\为了告诉您“\”只是一个“\”,不用于显示它后面的字符。
> nchar('\\"')
[1] 2
> nchar('\"')
[1] 1