亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以繞過 Pandas/Python 中的硬編碼并設置我選擇的行終止符嗎?

我可以繞過 Pandas/Python 中的硬編碼并設置我選擇的行終止符嗎?

瀟湘沐 2023-07-18 13:45:11
我有一個超級臟的文本數據集。雖然各個列值是用制表符分隔的,但所需的數據行中有許多換行符。所有數據條目均由硬“\n”符號分隔。我嘗試將lineterminator參數設置為'\n',但它仍然將換行符讀取為新行。執行任何類型的正則表達式或相關操作很可能會導致制表符分隔丟失,我需要將數據加載到數據框中。由于數據集的大小,進行逐字或逐行操作也不完全可行。有沒有辦法讓 Pandas 不將換行符讀取為新行,并且僅在看到'\n'時才轉到新行?突出顯示的紅色框應該是一個條目。
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

您可以預處理到適當的 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 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號