当前位置: 首页 > 知识库问答 >
问题:

如何不将重复值写入csv文件[duplicate]

夏侯昆琦
2023-03-14

我正试图找到一种更好的方法将数据写入csv文件。现在,每个循环迭代都会将标题和数据附加到文件中,如下所示

我想修改我的逻辑,以便我只得到像这样的数据。

任何关于我可以改变的建议都非常感谢。谢啦

......
var csvContent = new StringBuilder();
csvContent.AppendLine("ONE, TWO, THREE);
var csvPath = defaultFilePath + "file7.csv";
foreach (var i in values)
{
    fileData.DataOne = i["DataPointOne"].ToString();
    fileData.DataTwo = i["DataPointTwo"].ToString();
    fileData.DataThree = DateTime.Parse(i["DataPointThree"]);
    csvContent.AppendLine(fileData.DataOne + "," + fileData.DataTwo + "," + fileData.DataThree);
    File.AppendAllText(csvPath, csvContent.ToString());
}
......

共有2个答案

龙安阳
2023-03-14

问题是相同的StringBuilder内容多次存储到文件中。

迭代1csvContent包含第1行的数据--

迭代2csvContent追加了第2行--

迭代3csvContent追加了第3行--

简单的解决方法应该是将文件存储在循环之外,或者使用其他答案中建议的StreamWriter。

黎震博
2023-03-14

您不断地向csvContent添加行,然后每次迭代都将其写入文件。摆脱StringBuilder(这里并不真正需要它),并使用像这样的StreamWriter

using(var streamWriter = new StreamWriter("path\\toFile.csv")) 
{
    streamWriter.WriteLine("ONE, TWO, THREE");
    foreach (var i in values)
    {
        fileData.DataOne = i["DataPointOne"].ToString();
        fileData.DataTwo = i["DataPointTwo"].ToString();
        fileData.DataThree = DateTime.Parse(i["DataPointThree"]);
        streamWriter.WriteLine(fileData.DataOne + "," + fileData.DataTwo + "," + fileData.DataThree);
    }
}
 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 水平写CSV (2个答案) 6年前关闭。 多亏了另一个线程,我才以Python初学者的身份成功地将字典写到了csv中:将字典写到 csv文件中,每个“键:值”一行] csv看起来像这样: 现在,我想知道用相同的键组织多个词典的最佳方法是什么。我希望将键作为第一列,然后在其后的各列中使用dict值,所有这些都具有第一行以按字典名称区分各列。 当然,有很多线

  • 我使用supercsv CsvBeanWriter将值写入csv文件。 示例类: 我得到的结果是: 注意

  • 我正在用python编写一个CSV文件,使用以下行: 不幸的是,输出显示了一个无用的列,如下所示: 如何才能摆脱这个无用的第一纵队?

  • 问题内容: 我认为我应该完成一项我似乎无法解决的非常简单的任务。 如何将Python字典写入csv文件?我想要的只是将字典键写入文件的第一行,并将键值写入第二行。 我最接近的是以下内容(我是从别人的帖子中获得的): 问题是,上面的代码似乎只将密钥写入第一行,仅此而已。我没有将值写入第二行。 有任何想法吗? 问题答案: 您使用的是期望字典列表而不是字典的列表。您只想DictWriter.writer

  • 问题内容: 我想打开一个新的文本文件,然后将numpy数组保存到该文件。我写了这段代码: 我收到此错误: 有人知道怎么了吗? 另外,我在终端中找到了一个名为file_2的空文件,但是里面没有任何内容。 编辑:我正在使用Python3.4 问题答案: 看来您正在使用Python3。因此,请以二进制模式()而非文本模式()打开文件: 另外,关闭文件句柄,以确保将所有内容都写入磁盘。您可以使用-stat

  • 问题内容: 我有一个脚本(使用PhantomJS),用于测试加载网页需要多长时间。我要弄清楚的是如何写将页面加载到.csv文件所花费的时间结果。然后,如果我要重新运行测试,以将另一个结果添加到.csv文件中。 码: 问题答案: 您可以将fs模块与附加模式下的方法一起使用。 其中,文件路径是字符串,是包含CSV行的字符串。 就像是: