Linux中利用csvquote處理csv檔案
問題
在linux中處理csv檔案時,經常會碰到欄位中包含,
或\n
的問題,這種情況下就不能使用awk
、cut
等命令處理檔案
解決方案
使用csvquote
對csv進行預處理。GitHub
csvquote
可將csv欄位中的,
轉換為US
(unit separator,單元分隔符,ascii碼31),將\n
轉換為RS
(record separator,記錄分隔符,ascii碼30),這樣在使用cut
等命令時就能將它們當作普通字元處理了。
注意事項
在使用python處理轉換後的檔案時,要注意open
方法開啟檔案是預設的newline
引數值為None
,python官方文件對該引數的解釋:
newline 控制 universal newlines 模式如何生效(它僅適用於文字模式)。它可以是 None,’’,’\n’,’\r’ 和 ‘\r\n’。它的工作原理:
- 從流中讀取輸入時,如果 newline 為 None,則啟用通用換行模式。輸入中的行可以以 ‘\n’,’\r’ 或 ‘\r\n’ 結尾,這些行被翻譯成 ‘\n’ 在返回呼叫者之前。如果它是 ‘’,則啟用通用換行模式,但行結尾將返回給呼叫者未翻譯。如果它具有任何其他合法值,則輸入行僅由給定字串終止,並且行結尾將返回給未呼叫的呼叫者。
- 將輸出寫入流時,如果 newline 為 None,則寫入的任何 ‘\n’ 字元都將轉換為系統預設行分隔符 os.linesep。如果 newline 是 ‘’ 或 ‘\n’,則不進行翻譯。如果 newline 是任何其他合法值,則寫入的任何 ‘\n’ 字元將被轉換為給定的字串。
雖然python文件中只提到了 ‘\n’,’\r’ 或 ‘\r\n’ ,但其實RS
字元也會被當作換行符
>>> '1\x1e2\n3\r4\r\n5\n\r6'.splitlines()
['1', '2', '3', '4', '5', '', '6']
所以在處理時需要顯式地指定newline
引數為檔案的原始換行符,如Linux中的\n
。
相關文章
- 使用 Python 處理 CSV 檔案Python
- csv跨域傳輸再生成csv檔案處理跨域
- Python處理CSV檔案的幾個方法Python
- 如何處理大體積 XLSX/CSV/TXT 檔案?
- Excel VBA 利用FileSystemObject處理檔案ExcelObject
- Linux檔案管理知識:文字處理Linux
- 處理 Linux 檔案的 3 個技巧Linux
- linux 透過xmllint處理xml檔案LinuxXML
- java中 檔案壓縮處理Java
- Linux檔案處理三劍客之awkLinux
- Linux檔案處理三劍客之grepLinux
- Linux檔案處理三劍客之sedLinux
- linux入門必學檔案處理命令Linux
- 使用go語言對csv檔案進行解析處理,匯入匯出。Go
- Python中可靠地處理檔案Python
- 11.9Linux檔案管理知識:文字處理Linux
- python檔案處理Python
- python處理檔案Python
- python 檔案處理Python
- 利用 python 遍歷多級資料夾處理不同檔案Python
- linux 下MySQL命令列匯出csv檔案格式LinuxMySql命令列
- csv是什麼格式檔案 csv檔案是什麼意思
- CSV檔案儲存
- python生成CSV檔案Python
- pandas操作csv檔案
- Modern CSV for mac CSV檔案編輯器Mac
- Python之檔案處理Python
- Go xml檔案處理GoXML
- python處理txt檔案Python
- window 批處理檔案
- 計算機程式的思維邏輯 (64) – 常見檔案型別處理: 屬性檔案/CSV/EXCEL/HTML/壓縮檔案計算機型別ExcelHTML
- csv檔案用什麼開啟 csv是什麼格式檔案
- (五)Linux之檔案與目錄管理以及文字處理Linux
- 如何在 .NET Core WebApi 中處理 MultipartFormDataContent 中的檔案WebAPIORM
- Excel檔案 利用MySQL/Python 實現自動處理資料的功能ExcelMySqlPython
- python 寫入CSV檔案Python
- Mysql匯入csv檔案MySql
- java匯出CSV檔案Java