2017-01-01 39 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