首页 > 解决方案 > pandas - 读取和写入csv时换行符在多行中拆分行

问题描述

我的任务是从一个位置读取 CSV 文件,在数据框中的内存中进行一些操作,然后将文件放在其他位置。

源文件是'||' 分隔,目标文件必须是“,”分隔。

我已经为具有不同列的多个文件执行此操作。

在源 csv 之一中,其中一列在该列中包含换行符。

示例源 CSV 文件:

id||notes<CR><LF>
1||notesLine1<CR><LF>
2||notesLine1<CR><LF>
notesLine2<CR><LF>
3||notesLine1: notesLine2<CR><LF>

请注意,行分隔符也是 'note' 列中的新行字符也是 . 我无法更改源,但是如果需要进行任何修改,我可以在内存或磁盘中有一个中间层。

代码:

...
df_target = pd.read_csv(source_file, dtype = None, parse_dates= True, keep_default_na= False,header=None,sep="\|\|",engine='python', encoding='utf-8'))

df_target.to_csv(target_file,header=header_list,index=False,quoting=csv.QUOTE_ALL)
...

电流输出:

"id","notes"<CR><LF>
"1","notesLine1"<CR><LF>
"2","notesLine1"<CR><LF>
"notesLine2",""<CR><LF>      -- extra unwanted row being created
"3","notesLine1: notesLine2"<CR><LF>

请注意,该行分为两行,总行数为 4 行。我不希望这种情况发生!

预期输出:

"id","notes"<CR><LF>
"1","notesLine1"<CR><LF>
"2","notesLine1 \n notesLine2",""<CR><LF>
"3","notesLine1: notesLine2"<CR><LF>

注意:我可以在同一行中包含 '\n' 和数据,而不是分成两行。这样总行数是 3 而不是 4。

有没有办法解决这个问题?

标签: pythonpandas

解决方案


CR 和 LF 是控制字符,分别编码为 0x0D(十进制 13)和 0x0A(十进制 10)。

它们用于标记文件中的换行符。


推荐阅读