熊猫-字段值中存在管道定界符,从而导致行错误

时间:2018-11-15 16:03:42

标签: python pandas

我正在使用Pandas导入文本文件,如下所示:

ts.createVariableStatement(
      [],
      ts.createVariableDeclarationList(
        [
          ts.createVariableDeclaration(
            'a',
            undefined,
            ts.createStringLiteral('42'),
          ),
        ],
        ts.NodeFlags.Const,
      ),
    )

我在1行出现错误,因为该字段值中有一个Pipe。当它尝试解析该行时,会发现该行的长度太长,从而引发错误。它允许文件处理;但是,此行丢失。

示例:

行-

data = pd.read_csv('filepath.txt', sep='|', quoting=3, 
                    error_bad_lines=False, encoding='latin1', low_memory=False)

解析此文件将创建:

4321|Test|1/2/1900
1234|Test||1/1/1900

我想消除多余的|在第二行“测试|”中或让熊猫了解它的存在是为了创造:

4321   Test    1/2/1900
1234   Test               1/1/1900

否则就可以了:

4321   Test    1/2/1900
1234   Test    1/1/1900

我试图使用转换器,其他报价方法(quotchars等),但无济于事。

关于如何实现这一目标的任何想法?欢迎所有建议。

埃里克

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是删除“ ||”的任何实例然后用熊猫例如:

import pandas as pd
from io import StringIO


buffer= StringIO()
with open(r'filepath.txt', 'r') as f:
    for line in f.readlines():
        if "||" not in line:
            buffer.write(line)




buffer.seek(0)
data = pd.read_csv(buffer, sep='|', quoting=3,
                    error_bad_lines=False, encoding='latin1', low_memory=False)

您还可以通过查找和替换操作在python之外进行操作。