转化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. 坑2

    然后还是vim替换了很多次没有成功。
    可以进一步研究是否替换出了语法错误:参考http://tanqisen.github.io/blog/2013/01/13/vim-search-replace-regex/ kennel

  3. 坑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
    **

  4. 坑4

**还出现错误 转码utf8解决
eg:mac自带numbers另存时选择转码utf8

你可能感兴趣的:(文本分析)