Python:删除CSV中的“中间行”换行符

2024-04-19 19:10:22 发布

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

我有一个csv生成的平台,我们在工作中使用的86个不同的领域。字段或“列”的数量应保持不变。这些字段是多种数据类型的混合体,但其中一些字段具有包含换行符的自由格式文本。你知道吗

问题是,当我将csv导入任何程序(Excel、notepad、Jupyter Notebook with Python)时,自由格式的文本字段被拆分为一个新行(如果该字段包含多个换行符,则为多个新行)。你知道吗

我在这里尝试了许多由不同线程提出的建议,但是没有一个真正适用于我正在做的事情。你知道吗

下面是一个示例,说明了我在平台中使用的格式以及在csv中需要的格式(实际数据更复杂,但只是为了说明问题)(下面包含的\n是为了说明实际中断的位置,但它们实际上在编辑器中不可见(除非搜索它们)):

Header0, H1, H2, H86
Name0, ABC, 123, “Hello\n my name is ABC.\n I live at 123.”\n
Name1, DEF, 456, “Hello\n my name is DEF.\n I live at 456.”\n
Name2, GHI, 789, “Good bye”\n

当我将其导入任何文本编辑器、Excel、使用pandas的Python Jupyter等时,我得到:

Header0, H1, H2, H86
Name0, ABC, 123, “Hello\n
my name is ABC.,,,\n
I live at 123.”,,,\n
Name1, DEF, 456, “Hello\n
my name is DEF.,,,\n
I live at 456.”,,,\n
Name2, GHI, 789, “Good bye”\n

建议删除所有换行符,但这不起作用,因为我将删除每行末尾的合法换行符(否则,如何在csv中指定单独的行?<;-不是修辞,如果我错了请纠正我)。你知道吗

我一直在考虑的一个解决方法是编写一个脚本,在csv中迭代,计算逗号,然后将逗号分隔的每个项目添加到数据帧中,直到它碰到86个逗号,然后开始添加到数据帧中的下一行。但我真的需要别人帮我写。你知道吗

最后注意,从平台生成CSV时,所有字段中的逗号都会被删除,因此CSV中唯一的逗号是用作分隔符的逗号。你知道吗


Tags: csv数据name文本livehelloismy
1条回答
网友
1楼 · 发布于 2024-04-19 19:10:22

这应该做到:

with open('path/to/input') as infile, open('path/to/output', 'w') as outfile:
    outfile = csv.writer(outfile)
    for row in csv.reader(infile):
        outfile.writerow([c.replace('\n', '') for c in row])

相关问题 更多 >