2017-01-01 92 views
0

我使用fread在其字段中读取包含html代码的csv文件,对其进行一些维护并使用fwrite将生成的数据表写入文件。问题是,现在所有的html都填充了四个引号,如colspan="""""7""""。有qmethod的论点,但我不知道如何使用它,因为我不想用反斜杠来避免引号。如何让fwrite()不要双引号?

是否有可能避免这种情况,还是我必须使用sed?

比如我得到了CSV文件:

htmlcode,id 
<colspan="7">,1 
<colspan="8">,2 

,我读了与fread一个DataTable,我删除ID列,写数据表背到CSV文件,fwrite我得到:

htmlcode 
<colspan=""""7""""> 
<colspan=""""8""""> 
+0

其实我没有得到你的问题,而是会使用'gsub'更换多发性occurence的'“'用单' “工作? –

+0

FWIW base64编码除非我们正在谈论数据库“blob”或WARC文件,否则HTML“字段”通常比以原始形式存储更好。 – hrbrmstr

回答

1

两种可能的解决方案(使用v1.10.0 data.table):

1:使用quote = FALSE参数:

fwrite(dt, 'fwrite.csv', quote = FALSE) 

当在文本编辑器打开该文件,你会看到:

htmlcode 
<colspan="7"> 
<colspan="8"> 

2:单替换双括号一个(也在评论中由@ joel.wilson提出):

dt[, htmlcode := gsub('\"', '\'', htmlcode)] 
fwrite(dt, 'fwrite.csv') 

当在文本编辑器打开该文件,你会看到:

htmlcode 
<colspan='7'> 
<colspan='8'> 
+0

实际上报价= FALSE仍然加倍报价,即'“”7“”'而不是'“7”' – ChiseledAbs

+0

@ChiseledAbs在我的电脑上它不(macOS);你使用的是哪个版本的'data.table'? – Jaap

+0

1.10.0在Linux上,也许这是由于整个字段用引号括起来的事实,例如'“”'。你会知道如何解决这个问题,还是我必须进行替换? – ChiseledAbs