字段值中存在管道分隔符,导致错误行

2024-09-30 03:22:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我在1行上得到一个错误,因为字段值中有一个管道。当它试图分析行时,它发现行的长度太长,并抛出错误。它允许文件处理;但是,缺少此行。你知道吗

示例:

行-

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

分析此文件将创建:

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

我想消除第二行“Test”中多余的|,或者让panda理解它的存在是为了创建:

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

或者这样就好了:

 1234   Test|    1/1/1900

我曾尝试使用转换器,其他引用方法(quotchars等),但没有效果。你知道吗

你知道怎么度过这个难关吗?欢迎所有建议。你知道吗

埃里克


Tags: 文件csvtesttxtfalsepandasreaddata
1条回答
网友
1楼 · 发布于 2024-09-30 03:22:50

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

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之外通过find和replace操作来完成。你知道吗

相关问题 更多 >

    热门问题