为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇湘沐 2023-07-18 13:45:11
我有一个超级脏的文本数据集。虽然各个列值是用制表符分隔的,但所需的数据行中有许多换行符。所有数据条目均由硬“\n”符号分隔。我尝试将lineterminator参数设置为'\n',但它仍然将换行符读取为新行。执行任何类型的正则表达式或相关操作很可能会导致制表符分隔丢失,我需要将数据加载到数据框中。由于数据集的大小,进行逐字或逐行操作也不完全可行。有没有办法让 Pandas 不将换行符读取为新行,并且仅在看到'\n'时才转到新行?突出显示的红色框应该是一个条目。
查看完整描述

1 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

您可以预处理到适当的 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)


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信