Python 加载文本文件错误:CParserError:标记化数据时出错

Python 加载文本文件错误:CParserError:标记化数据时出错,python,pandas,text-files,parse-error,Python,Pandas,Text Files,Parse Error,加载文本文件错误:CParserError:标记化数据时出错 我是一个新的熊猫学习者。我正在尝试使用pandas打开一个文本文件。我用python编写代码,然后访问正确的路径并运行python文件,但失败了 这是原始数据。没有字段名,所有数据行都用空格分隔: 2017-07-02 23:59:51127.0.0.1 GET /ecvv_product/EcvvSearchProduct.aspx cid=202104&p=&pageindex=&kw=electric-s

加载文本文件错误:CParserError:标记化数据时出错

我是一个新的熊猫学习者。我正在尝试使用pandas打开一个文本文件。我用python编写代码,然后访问正确的路径并运行python文件,但失败了

这是原始数据。没有字段名,所有数据行都用空格分隔:

2017-07-02 23:59:51127.0.0.1 GET /ecvv_product/EcvvSearchProduct.aspx cid=202104&p=&pageindex=&kw=electric-skateboard 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 986 31.7.188.55
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvHotSearchProduct.aspx kw=hydrogen-motor 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 2539 31.7.188.55
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvSearchProduct.aspx cid=100005713&p=&pageindex=&kw=electric-skateboard 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 1172 31.7.188.55
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvHotSearchProduct.aspx kw=stainless-stand 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 3152 31.7.188.55
下面是我的简单python代码:

import pandas as pd

DATA_FILE='data.log'
df = pd.read_table(DATA_FILE, sep=" ")

print(df)
但我得到的错误如下:

Traceback (most recent call last):
  File "open.py", line 7, in <module>
    df = pd.read_table(DATA_FILE, sep=" ")
  File "C:\Users\hh\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 646, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:\Users\hh\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 401, in _read
    data = parser.read()
  File "C:\Users\hh\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 939, in read
    ret = self._engine.read(nrows)
  File "C:\Users\hh\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 1508, in read
    data = self._reader.read(nrows)
  File "pandas\parser.pyx", line 848, in pandas.parser.TextReader.read (pandas\parser.c:10415)
  File "pandas\parser.pyx", line 870, in pandas.parser.TextReader._read_low_memory (pandas\parser.c:10691)
  File "pandas\parser.pyx", line 924, in pandas.parser.TextReader._read_rows (pandas\parser.c:11437)
  File "pandas\parser.pyx", line 911, in pandas.parser.TextReader._tokenize_rows (pandas\parser.c:11308)
  File "pandas\parser.pyx", line 2024, in pandas.parser.raise_parser_error (pandas\parser.c:27037)
pandas.io.common.CParserError: Error tokenizing data. C error: Expected 6 fields in line 4, saw 17
回溯(最近一次呼叫最后一次):
文件“open.py”,第7行,在
df=pd.read\u表(数据文件,sep=”“)
文件“C:\Users\hh\Anaconda3\lib\site packages\pandas\io\parsers.py”,第646行,在解析器中
返回读取(文件路径或缓冲区,kwds)
文件“C:\Users\hh\Anaconda3\lib\site packages\pandas\io\parsers.py”,第401行,已读
data=parser.read()
文件“C:\Users\hh\Anaconda3\lib\site packages\pandas\io\parsers.py”,第939行,已读
ret=自身。\发动机读取(nrows)
文件“C:\Users\hh\Anaconda3\lib\site packages\pandas\io\parsers.py”,第1508行,已读
数据=自身。\读卡器读取(nrows)
pandas.parser.textleader.read(pandas\parser.c:10415)中第848行的文件“pandas\parser.pyx”
文件“pandas\parser.pyx”,第870行,位于pandas.parser.TextReader.\u read\u low\u内存中(pandas\parser.c:10691)
文件“pandas\parser.pyx”,第924行,在pandas.parser.TextReader.\u read\u行中(pandas\parser.c:11437)
文件“pandas\parser.pyx”,第911行,位于pandas.parser.TextReader.\u标记化\u行(pandas\parser.c:11308)
pandas.parser.raise\u parser\u error(pandas\parser.c:27037)中的文件“pandas\parser.pyx”,第2024行
pandas.io.common.CParserError:标记数据时出错。C错误:第4行中预期有6个字段,saw 17

我的python代码中一定有运行的东西。如何获得正确的语法代码?

您在第一行遗漏了一个空格:

2017-07-02 23:59:51127.0.0.1 
替换为:

2017-07-02 23:59:51 127.0.0.1 
刚刚测试过:

In [12]: cat data.log
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvSearchProduct.aspx cid=202104&p=&pageindex=&kw=electric-skateboard 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 986 31.7.188.55
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvHotSearchProduct.aspx kw=hydrogen-motor 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 2539 31.7.188.55
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvSearchProduct.aspx cid=100005713&p=&pageindex=&kw=electric-skateboard 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 1172 31.7.188.55
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvHotSearchProduct.aspx kw=stainless-stand 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 3152 31.7.188.55

In [13]: dx = pd.read_table('data.log', sep=" ", header=None)

In [14]: dx
Out[14]: 
           0         1          2    3   \
0  2017-07-02  23:59:51  127.0.0.1  GET   
1  2017-07-02  23:59:51  127.0.0.1  GET   
2  2017-07-02  23:59:51  127.0.0.1  GET   
3  2017-07-02  23:59:51  127.0.0.1  GET   

                                        4   \
0     /ecvv_product/EcvvSearchProduct.aspx   
1  /ecvv_product/EcvvHotSearchProduct.aspx   
2     /ecvv_product/EcvvSearchProduct.aspx   
3  /ecvv_product/EcvvHotSearchProduct.aspx   

                                                  5     6  7          8   \
0    cid=202104&p=&pageindex=&kw=electric-skateboard  8082  -  127.0.0.1   
1                                  kw=hydrogen-motor  8082  -  127.0.0.1   
2  cid=100005713&p=&pageindex=&kw=electric-skateb...  8082  -  127.0.0.1   
3                                 kw=stainless-stand  8082  -  127.0.0.1   

                                                  9  10   11  12  13    14  \
0  Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;...  -  200   0   0   986   
1  Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;...  -  200   0   0  2539   
2  Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;...  -  200   0   0  1172   
3  Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;...  -  200   0   0  3152   

            15  
0  31.7.188.55  
1  31.7.188.55  
2  31.7.188.55  
3  31.7.188.55  

您在第一行遗漏了一个空格:

2017-07-02 23:59:51127.0.0.1 
替换为:

2017-07-02 23:59:51 127.0.0.1 
刚刚测试过:

In [12]: cat data.log
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvSearchProduct.aspx cid=202104&p=&pageindex=&kw=electric-skateboard 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 986 31.7.188.55
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvHotSearchProduct.aspx kw=hydrogen-motor 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 2539 31.7.188.55
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvSearchProduct.aspx cid=100005713&p=&pageindex=&kw=electric-skateboard 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 1172 31.7.188.55
2017-07-02 23:59:51 127.0.0.1 GET /ecvv_product/EcvvHotSearchProduct.aspx kw=stainless-stand 8082 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;+DigExt;+DTS+Agent - 200 0 0 3152 31.7.188.55

In [13]: dx = pd.read_table('data.log', sep=" ", header=None)

In [14]: dx
Out[14]: 
           0         1          2    3   \
0  2017-07-02  23:59:51  127.0.0.1  GET   
1  2017-07-02  23:59:51  127.0.0.1  GET   
2  2017-07-02  23:59:51  127.0.0.1  GET   
3  2017-07-02  23:59:51  127.0.0.1  GET   

                                        4   \
0     /ecvv_product/EcvvSearchProduct.aspx   
1  /ecvv_product/EcvvHotSearchProduct.aspx   
2     /ecvv_product/EcvvSearchProduct.aspx   
3  /ecvv_product/EcvvHotSearchProduct.aspx   

                                                  5     6  7          8   \
0    cid=202104&p=&pageindex=&kw=electric-skateboard  8082  -  127.0.0.1   
1                                  kw=hydrogen-motor  8082  -  127.0.0.1   
2  cid=100005713&p=&pageindex=&kw=electric-skateb...  8082  -  127.0.0.1   
3                                 kw=stainless-stand  8082  -  127.0.0.1   

                                                  9  10   11  12  13    14  \
0  Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;...  -  200   0   0   986   
1  Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;...  -  200   0   0  2539   
2  Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;...  -  200   0   0  1172   
3  Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT;...  -  200   0   0  3152   

            15  
0  31.7.188.55  
1  31.7.188.55  
2  31.7.188.55  
3  31.7.188.55  

它起作用了!但对于几乎193MB的原始数据文件,同样的错误再次发生。这是否意味着原始数据文件有无效内容?请使用warn\u bad\u lines=True。如果error_bad_lines为False,warn_bad_lines为True,则将输出每个“bad line”的警告。在添加所有引用以消除可能的错误(我使用了skiprows=None、skipfooter=None、error\u bad\u lines=False、warn\u bad\u lines=True)之后,它仍然会得到相同的错误。无论如何,我仍然在努力从原始数据中找到无效的错误…哈哈!但对于几乎193MB的原始数据文件,同样的错误再次发生。这是否意味着原始数据文件有无效内容?请使用warn\u bad\u lines=True。如果error_bad_lines为False,warn_bad_lines为True,则将输出每个“bad line”的警告。在添加所有引用以消除可能的错误(我使用了skiprows=None、skipfooter=None、error\u bad\u lines=False、warn\u bad\u lines=True)之后,它仍然会得到相同的错误。无论如何,我仍在努力从原始数据中找到无效错误…lolIt确实看起来你的日志文件中的一些行(不是你提出的)结构不良。确实看起来你的日志文件中的一些行(不是你提出的)结构不良。