r - 如何阅读包含转义引号的引用文本

标签 r escaping quotes multiline read.csv

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



'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读取向量tt

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


不是最漂亮的解决方案,但是它可以工作(前提是您当然不在文件中某处有“字符” ...)

关于r - 如何阅读包含转义引号的引用文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032296/

相关文章:

r - 有没有办法查看列表

r - R 中 n 个伯努利随机变量的排列

java - 在java字符串文字中转义反斜杠

bash - 在 bash 变量中引用不受尊重

c - 我在 "Uva tex quotes"中的答案遇到问题(间距问题)

r - 在时间序列的背景下分解

linux - 在 Linux Mint 17.1 (MATE) 上安装最新版本的 R 3.2.1(世界著名宇航员)

Windows XP 索引服务 : escape #,!要么 @?

oracle转义函数

linux - 由于在 linux shell 中执行程序,我得到 "dquote>"