【发布时间】:2017-11-21 08:20:26
【问题描述】:
我是 stackoverflow 的新手,所以如果我的帖子没有正确发布或者您需要更多信息,请告诉我。所以我有一个非常奇怪的问题。我有一个 txt 文件,其中很多行由“;”分隔。通常应该有 42 个字段/列,但由于某种原因,我的 txt 文件中的某些行在导入并用“;”分隔时它向我显示了大量被跳过的行,因为 python“预期 42 个字段,看到 45 个”。我使用 pandas 导入文件,因为我的大部分转换都是用它完成的:
text = pd.read_csv('file.txt',encoding='ISO-8859-1', keep_default_na=False,error_bad_lines=False, sep=';')
我发现对于某些行,我有 3 个额外的“;”在末尾。因为大部分数据都是机密的,我不能在公司之外分享,所以我生成了一个类似的 3 行 txt 文件,向您展示我的问题所在。
;;;5123123;text1;text2;;;;123124;text3;text4;;;;5234234;text5;text6;;;;412321;text7;text8;;;;512312;text9;text10;;; ;15123213;text11;text12;;;;123123;text13;text14 ;;;4666190;text1;text2;;;;312312;text3;text4;;;;5123123;text5;text6;;;;;;;;;;;;;;;;;;;;;55123;文本7;文本8 ;;;5123123;text1;text2;;;;1321321;text3;text4;;;;123124;text5;text6;;;;;;;;;;;;;;;;;;;;;;3123123; 512312312;text7;;;
所以这些与我文件中的三行相似,但名称已替换。第一行和第二行是正确的,但第三行在导入时会产生 45 个字段。
那么有没有一种方法可以在导入文件之前浏览文件并查找以;;;5123123 开头的所有行并检查是否有“;”最后,如果有删除它们,然后当然导入它们。问题仅在于某些以;;;5123123 开头的行。这个错误有几百行,整个数据有一点点超过 50k 行。
【问题讨论】:
-
这些数据是如何生成的?格式很难拆分,有什么办法可以对上游的输出进行排序吗?
-
您好,它是每天从我运营的组织内的内部系统自动生成的。不幸的是,我认为在生成数据之前不可能解决问题。但如果我没记错的话,每一行都是有人手动输入到系统中的。
标签: python python-3.x pandas