请考虑以下逗号分隔的文件。为简单起见,让它包含一行:
'I am quoted','so, can use comma inside - it is not separator here','but can\'t use escaped quote :=('
如果您尝试使用命令阅读它
table <- read.csv(filename, header=FALSE)
该行将分为4部分,因为该行包含3个逗号。实际上,我只想阅读3个部分,其中一部分包含逗号。引用标志在那里寻求帮助。我试过了:
table <- read.csv(filename, header=FALSE, quote="'")
但这属于错误
"incomplete final line found by readTableHeader on table"
。发生这种情况的原因是引号的奇数(七)。read.table()
和scan()
都具有参数allowEscapes
,但是将其设置为TRUE
并没有帮助。可以,因为您可以从help(scan)
读取:解释的转义是控制字符
‘\ a,\ b,\ f,\ n,\ r,\ t,\ v',...
...其他任何逃脱
字符被视为自身,包括反斜杠
请建议您如何阅读此类带引号的csv文件,其中包含转义的
\'
引号。
最佳答案
一种可能是使用readLines()
照原样读取所有内容,然后用其他字符替换引号,例如:
tt <- readLines("F:/temp/test.txt")
tt <- gsub("([^\\]|^)'","\\1\"",tt) # replace ' by "
tt <- gsub("\\\\","\\",tt) # get rid of the double escape due to readLines
这允许您使用
textConnection
读取向量ttzz <- textConnection(tt)
read.csv(zz,header=F,quote="\"") # give text input
close(zz)
不是最漂亮的解决方案,但是它可以工作(前提是您当然不在文件中某处有“字符” ...)
关于r - 如何阅读包含转义引号的引用文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032296/