如何读取包含转义引号的引用文本

2023-11-26

考虑以下逗号分隔的文件。为了简单起见,让它包含一行:


'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 文件(包含转义字符)\' quotes.


一种可能性是使用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

这允许您使用 a 读取向量 tttextConnection

zz <- textConnection(tt)
read.csv(zz,header=F,quote="\"") # give text input
close(zz)

这不是最漂亮的解决方案,但它可以工作(当然,前提是文件中的某个位置没有“字符......)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何读取包含转义引号的引用文本 的相关文章

随机推荐