【发布时间】:2017-10-09 00:55:02
【问题描述】:
我不知道我尝试加载的 csv 文件有什么问题:
我收到如下错误消息:
b'Skipping line 2120260: expected 6 fields, saw 8\n'
但是当我查看这些线条时,它们对我来说看起来还不错。见下文——(我将在每个制表符 \t 后按回车键以使其更易于阅读)。
第 2,120,260 行(失败):
['user_000104\t
2005-09-12T06:25:50Z\t
a019a8cf-2601-4a81-b3c3-7b279a873713\t
Anne Clark\t
8f8e6bc0-c3c0-4062-875a-773a1de6206f\t
Empty Me']
第 9,000 行(未失败):
['user_000001\t
2008-06-15T17:28:31Z\t
a3031680-c359-458f-a641-70ccbaec6a74\t
Steve Reich\t
2991db42-3b19-4344-a340-605ac3fbd7e9\t
Drumming: Part Iv']
如果有人想自己尝试一下,请下载:
http://www.dtic.upf.edu/~ocelma/MusicRecommendationDataset/lastfm-1K.html
然后运行:
inpFile2 = pd.read_csv(fPath, sep='\t', error_bad_lines= False)
生成错误。和:
def checkRow(path,N):
with open(path, 'r') as f:
print("This is the line.")
print(next(itertools.islice(csv.reader(f), N, None)))
查看错误行(传入文件路径和您感兴趣的行)。确保导入 csv 并导入 itertools。
【问题讨论】:
-
您可以将第 2120250 到 2120270 行作为单独的文件上传到某个地方吗?那个文件很大,要下载。
-
好的一些进一步的更新。使用 emacs,我已经明确证明上面的行在第 2120452 行(至少根据 emacs),这一定意味着我上面使用的代码不是正确的..忍受我仍在编辑
-
...续 2)emacs 所说的错误行看起来也完全没问题 3)如果在 emacs 中我使用 Go to Buffer Position 而不是 Go to Line number is 并输入 2120260 ,它带我到第 17084 行。该行确实缺少 1 个字段,但是在这种情况下,错误消息没有意义。我可能会尝试将文本块剪切到一个单独的文件中,以确定哪一行是真正的不正确行
-
好吧,谜团加深了。我尝试提取所有可能的嫌疑人,然后将一些嫌疑人提取到一个新的较小文件中,但该文件加载正常。
-
注意:在找到实际包含错误的文件部分之前,我无法执行 Allen 的请求,因此我正在拆分并重新拆分 csv使用我设法找到错误的命令行拆分工具文件。