1. 程式人生 > >轉化windows和mac電腦檔案時的各種神坑--如何去掉windows文字的多餘的\r回車符(^M)

轉化windows和mac電腦檔案時的各種神坑--如何去掉windows文字的多餘的\r回車符(^M)

1。 原因
在Linux中,文字檔案用”/n”表示回車換行,而Windows用”/r/n”表示回車換行。所以在Linux中使用Windows的文字檔案常常會出現錯誤。
mac 或者在linux下,用VIM開啟一些windows下編輯過的文字檔案。每行結尾都會有一個^M符號,這是因為 DOS下的編輯器和Linux編輯器對檔案行末的回車符處理不一致,
對於回車符的定義:
windows:0D0A
unix\linux: 0A
MAC: 0D
檢測是否出現這個問題可以
發現是因為csv檔案單個item內有\r,即回車符

測試回車符

import pandas as pd
a = "\r\r 文字資料"
\ "\r\r 測試" d = {'nid':[100], 'doc':[a]} df = pd.DataFrame(data=d, columns=('nid', 'doc')) df.to_csv('p.txt', index=False) df1 = pd.read_csv('p.txt') print df1.head()

出現上面同樣的錯誤,去掉\r就可以,在大的檔案中,如何處理呢?\r或者^M符號?

2。解決方法

這篇文章說:

比較快捷的去除這些符號的方法有這麼幾種:
(1)是用VI的命令:
使用vi開啟文字檔案
vi dos.txt
命令模式下輸入
:set fileformat=unix
:w
(2) VI下使用正則表示式替換
g/\^M/s/\^M//
或者
%s/^M//g
(3)使用sed 工具
sed ’s/^M//’ filename > tmp_filename
(4)既然window下的回車符多了‘\r’,那麼當然通過刪除‘\r’ ,也可以實現:
tr -d ‘\r’
(5)最後一個方法是本人最常用的方法,個人覺得最方便
在終端下敲命令:
$ dos2unix filename
直接轉換成unix格式,就OK了!~

  1. 坑1

    然而vim首先輸入^M 是個大坑,查了很久:要按住control+v,鬆開v,再按m才可以打出^M的正確拼寫,

  2. 坑3

    pip install dos2unix成功了卻不能呼叫,又是個坑。“-bash: dos2unix-1: command not found“
    參考http://macappstore.org/dos2unix/
    換成brew install dos2unix
    dos2unix終於成功了
    進一步,多文件操作可以參考:
    https://blog.csdn.net/anxuegang/article/details/6532978
    命令dos2unix和unix2dos的使用非常簡單,格式為:dos2unix filename
    批量進行檔案轉換:
    find -type f | xargs dos2unix
    **

  3. 坑4

**還出現錯誤 轉碼utf8解決
eg:mac自帶numbers另存時選擇轉碼utf8