首页 > 解决方案 > 换行有时无法在 .csv (Python/Pandas) 中正确显示

问题描述

我正在编写一个脚本来组织神经网络项目的数据,特别是一个句子,它是我分配给它的标签。我的脚本中将数据输出为.csv文件的部分(我暂时存储在列表中)是这样的:

    with open(out_file, 'w+') as out:
        out.write("sentence, label \n")  # Write a header for .csv file
        for item in corp_list:
            out.write(item + '\n')  # Item is intended to look like: '[sentence], [label]'

像上面一样,每个itemincorp_list都打算像这个例子一样格式化:

我喜欢去山上,L

其中“L”是我分配给它的标签。

当我使用加载它时,我的大部分数据pd.read_csv看起来都很完美,换行符按预期分隔每个条目。但是,大约有 11,000 个条目看起来像这样:

他是我的兄弟,E\n我们等不及要放假了,N\n我父亲是个画家,T\n她讨厌海,E

它开始将条目“合并”到一个大条目中,这使我的数据集非常难以使用。我真的不确定为什么大多数换行符有效,但其中一些由于某种原因不能。对于我所有的 1600 万个条目,我如何格式化数据并将其写入文件永远不会改变。

关于它是否被认为是换行符/代码问题或可能在我自己的数据集中的任何建议。

编辑:

我的数据没有逗号,请注意。.txt当我将相同的列表写入普通文件时,不会发生此问题。只有当我编写它然后通过 Pandas 数据框或CSV模块的读取器方法将其读取为 CSV 时才会发生这种情况。

此外,当我将我的列表输出到txt文件中,然后逐句将其加载到列表中而不是加载csv到数据框中时,不正确的条目会略有变化。所有不正确的条目都缺少逗号处的空格,例如,正确的条目如下所示:

我喜欢去山上,L

与不正确的条目相比(当然,就像提到的那样,上面有更多的连接):

我喜欢去山上,L

并且只有来自任何长的、不正确的字符串条目的最后一个标签被设置为标签。

标签: pythonpandascsvdata-sciencenewline

解决方案


尝试使用它,将两个字符串分开

with open(out_file, 'w+') as out:
    out.write("sentence, label \n")  # Write a header for .csv file
    for item in corp_list:
        out.write(item)
        out.write('\n') # Item is intended to look like: '[sentence], [label]'

或尝试使用 f-strings

with open('out_file', 'w+') as out:
    out.write("sentence, label \n")  # Write a header for .csv file
    for item in corp_list:
        out.write(f'{item}\n') # Item is intended to look like: '[sentence], [label]'

不建议使用 '+' 符号字符串连接以获得高复杂度。也许您的数据中隐藏了一些隐式字符串连接,负责合并。如果这没有帮助,那么问题很可能源于您的数据。


推荐阅读