【发布时间】: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