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

时间:2019-08-02 02:44:04

标签: python

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

问题是,当我将csv导入任何程序(Excel,记事本,带有Python的Jupyter Notebook)时,自由格式的文本字段会分为新行(如果该字段包含多个换行符,则分为多个新行) )。

我在这里尝试了各种线程建议的许多方法,但都没有真正适用于我的工作。

这是我在平台中想要并在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中唯一的逗号是用作分隔符的逗号。

1 个答案:

答案 0 :(得分:1)

这应该做到:

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])