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

我有一个超级脏的文本数据集。虽然各个列值是用制表符分隔的,但所需的数据行中有许多换行符。所有数据条目均由硬“\n”符号分隔。

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

有没有办法让 Pandas 不将换行符读取为新行,并且仅在看到'\n'时才转到新行?

突出显示的红色框应该是一个条目。


潇湘沐
浏览 81回答 1
1回答

守着一只汪

您可以预处理到适当的 TSV,然后从那里读取它。用于itertools.groupby查找“\N”结尾。如果此文件存在其他问题,例如内部选项卡未转义,则一切都将失败。import itertoolsimport reseparator_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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python