2
A
回答
2
嗯,有一些快捷鍵,你可以採取,但也有幾件事情是你無法迴避:
根據不同的編碼,一個字符可能不會映射到文件中的單個字節,因此您必須將其作爲文本讀取。
您必須至少解析文件的第一條記錄。儘管CSV格式使用換行符來分隔記錄,但它不是基於行的。值也可以包含換行符,因此您不能只讀取第一個換行符並理所當然地認爲這是第一條記錄。
沒有辦法刪除文件的一部分,所以無論你做什麼,你仍然需要重寫整個文件。
所以,你可以解析頭(如果有的話),並在第一個記錄,那麼你就可以讀取該文件以純文本的其餘部分。然後,您可以將其餘的部分寫回到第一條記錄開始的位置(或者從文件的開頭寫入幷包含標題)。
3
雖然Guffa是正確的關於有在頭可能換行,這不是通常的,所以如果你確定與忽略了邊緣的情況下,你可以使用:
File.open('new.csv', 'w+') do |outf|
File.open('original.csv') do |inf|
inf.each_line.with_index do |line, i|
outf.write line unless i==0
end
end
end
如果這是太慢你,讓我知道,我們將重寫這個使用塊讀取,而不是實際解析整個文件。
相關問題
- 1. 刪除紅寶石
- 2. 紅寶石CSV讀第一行csv文件
- 3. 如何刪除和紅寶石陣
- 4. 刪除「」從線紅寶石
- 5. 啓動紅寶石 - 我的第一個紅寶石網站
- 6. 紅寶石從字符串中刪除第一個字
- 7. 紅寶石在第一個空格後刪除所有內容
- 8. 如果你有哈希散列如何刪除第一哈希值 - 紅寶石
- 9. 紅寶石 - 如何刪除鑑於一類這樣的對象
- 10. 紅寶石 - 如何刪除一些字符後的空間?
- 11. 紅寶石 - 如何運行Windows cmd上的紅寶石代碼
- 12. 如何運行紅寶石
- 13. 紅寶石:CSV到YAML
- 14. 紅寶石並行csv導入
- 15. 紅寶石模除
- 16. 在紅寶石
- 17. 紅寶石鞋,多元素刪除
- 18. 刪除。從十進制紅寶石
- 19. 刪除紅寶石用戶記錄
- 20. 紅寶石數組中刪除在
- 21. 紅寶石文件刪除黃瓜
- 22. 刪除線<br>紅寶石串
- 23. 刪除數組元素中紅寶石
- 24. 紅寶石 - 刪除部分文字
- 25. 紅寶石 - 從哈希刪除元素
- 26. 紅寶石 - 從字符串中刪除
- 27. 紅寶石SFTP刪除目錄
- 28. 刪除逗號和空白紅寶石
- 29. OSX手動刪除紅寶石和寶石
- 30. 如何紅寶石
僅僅因爲字段包含未轉義的特殊字符,爲什麼這意味着「CSV格式不是基於行」?但是,我同意你永遠不應該假設文件格式正確。 – klynch 2010-08-15 02:35:47
@klynch:這意味着你不能只讀一行,然後將其解析爲記錄,因爲記錄可能會跨越多行。這不是因爲它沒有正確格式化,儘管這是一個好點。例如,Excel可能會在記錄末尾留出值,如果它們爲空,則不能認爲所有記錄都具有相同數量的值。 – Guffa 2010-08-15 09:22:40