pandas read_csv 错误: Buffer overflow caught - possible malformed input file.

一、错误现象

  File "/root/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.py", line 1213, in read
    data = self._reader.read(nrows)
  File "pandas/parser.pyx", line 766, in pandas.parser.TextReader.read (pandas/parser.c:7988)
  File "pandas/parser.pyx", line 788, in pandas.parser.TextReader._read_low_memory (pandas/parser.c:8244)
  File "pandas/parser.pyx", line 842, in pandas.parser.TextReader._read_rows (pandas/parser.c:8970)
  File "pandas/parser.pyx", line 829, in pandas.parser.TextReader._tokenize_rows (pandas/parser.c:8838)
  File "pandas/parser.pyx", line 1833, in pandas.parser.raise_parser_error (pandas/parser.c:22649)
pandas.parser.CParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file.

二、错误原因

因此:

        在Windows当源数据行尾有两个字符“\r\n”时,且使用pandas的默认to_csv(默认line_terminator : string, default ‘n’)时,就会多出来一个“\r”字符。

说明:

\r —回车符Carriage return,光标移动到行首 
\n—换行符line feed, 光标移动到下一行New line

对于换行这个动作: 
unix/linux下一般只有一个0x0A表示换行(“\n”),每行结尾只有“<换行>”,采用换行符LF表示下一行,即“\n”; 
windows下一般都是0x0D和0x0A两个字符(“\r\n”),每行结尾是“<回车><换行>”,即“\r\n”; 
苹果机(MAC OS系统)则采用回车符CR表示下一行(\r),每行结尾是“<回车>”,采用回车符CR表示下一行,即“\r”。

三、错误解决方案(源头上)

在使用to_csv时,使用“\r\n”作为行分割符,读取时使用默认read_csv读取

写:
data.to_csv("./temp/company_hold.csv", line_terminator="\r\n", index=False)

读:
pandas.read_csv("./temp/company_hold.csv")

四、附录

其它网友从结果层面提供的解决方案:

pandas.read_csv('./temp/test.csv', lineterminator='\n') 

添加参数lineterminator='\n',使用\n作为换行符!让跟\r没有关系就ok了。

https://blog.csdn.net/qq_23392341/article/details/76851183 

https://blog.csdn.net/leiting_imecas/article/details/68928553

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值