我可以绕过Pandas/Python中的硬编码,设置我选择的行终止符吗?

2024-10-01 04:55:43 发布

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

我有一个超脏的文本数据集。虽然各个列值以制表符分隔,但在所需的数据行中有许多换行符。 所有数据项都用硬“\n”符号分隔

我尝试将lineterminator参数设置为'\n',但它仍将换行作为新行读取。 执行任何类型的正则表达式或相关操作都很可能导致选项卡分隔丢失,我需要将数据加载到数据帧中。此外,由于数据集的大小,执行逐字逐行操作并不完全可行

有没有办法让熊猫不把换行符作为新行来读,而只在它看到一个“”\n“”时才转到新行

我的数据快照: The unprocessed dataset

下面是当前状态的快速查看: current output

突出显示的红色框应为一个条目


Tags: the数据文本类型符号快照选项卡制表符
1条回答
网友
1楼 · 发布于 2024-10-01 04:55:43

您可以预处理到一个适当的TSV,然后从那里读取它。使用itertools.groupby查找“\N”结尾。如果此文件存在其他问题,例如内部选项卡未转义,则所有下注都将关闭

import itertools
import re

separator_re = re.compile(r"\s*\\N\s*$", re.MULTILINE)

with open('other.csv') as infp:
    with open('other-conv.csv', 'w') as outfp:
        for hassep, subiter in itertools.groupby(infp, separator_re.search):
            if hassep:
                outfp.writelines("{}\n".format(separator_re.sub("",line))
                    for line in subiter)
            else:
                for line in subiter:
                    if line.endswith("\\\n"):
                        line = line[:-2] + " "
                    else:
                        line = line.strip()
                    outfp.write(line)

相关问题 更多 >