【问题标题】:Newlines sometimes don't display correctly in .csv (Python/Pandas)换行有时无法在 .csv (Python/Pandas) 中正确显示
【发布时间】:2020-12-03 17:51:02
【问题描述】:

我正在编写一个脚本来组织神经网络项目的数据,特别是一个句子和我为其分配的标签。我的脚本中将数据输出为.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]'

像上面一样,corp_list 中的每个 item 都打算像下面的例子一样格式化:

我喜欢去山里,L

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

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

他是我的兄弟,E\n我们迫不及待地想去度假,N\n我父亲是个画家,T\n她讨厌海,E

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

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

编辑:

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

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

我喜欢去山里,L

与不正确的条目相比(当然,如前所述,还有更多的连接):

我喜欢去山里,L

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

【问题讨论】:

  • 您在文件中看到的是文字 \n 而不是换行符?
  • 我唯一能想到的是这些都在corp_list 数据本身中。您的代码看起来不错。
  • count(item for item in corp_list if r'\n' in item) 显示什么?
  • 列标题中有空格吗?
  • @Barmar 是的,我看到的是文字字符 \n 而不是实际的换行符。另外, count 是字符串的方法吗?在 Python2 中这似乎是一件大事,但我使用的是 3.7.7。我做了corp_list.count(...) 并得到了0

标签: python pandas csv data-science newline


【解决方案1】:

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

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

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

【讨论】:

  • 我刚刚在我的原始帖子中添加了有关仅在以 CSV 格式阅读时才会发生这种情况的信息。如果隐式字符串连接在这种格式中更加敏感(例如,更多意外的方法),您是否知道?
猜你喜欢
  • 1970-01-01
  • 2020-03-16
  • 2019-11-13
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
相关资源
最近更新 更多