【问题标题】:Remove values from rows under specific columns in csv file从 csv 文件中特定列下的行中删除值
【发布时间】:2019-05-05 15:18:48
【问题描述】:

我目前正在尝试从 CSV 文件中特定列下的行中删除特定值。

最好的方法是什么?

是在代码中使用 XSLT 映射文件还是仅通过代码执行此操作? (使用 c#)

我想做的是这样的:

操作前:

 id, name, email, phoneNumber, dob 
 1,John Doe,JohnDoe@mail.com,123456789,1988-08-08
 2,Jane Doe,JaneDoe@mail.com,987654321,1987-07-07

操作后:

 id, name, email, phoneNumber, dob 
 1,John Doe,,,1988-08-08 
 2,Jane Doe,,,1987-07-07

如你所见,“email”和“phoneNumber”不见了

【问题讨论】:

  • 请编辑您的问题并向我们展示您当前正在使用的代码,并描述您在使用该代码时遇到的任何问题。
  • XSLT 是真正为转换 XML 文件而设计的。虽然处理 CSV 文件并非不可能,但最好还是通过代码来处理。一个例子请参见stackoverflow.com/questions/3507498/…
  • 这并不难,所以我会用代码来做。可能有一些工具可以让你用更少的代码完成它,但是学习它所花费的时间会消除任何好处(未来的维护者可能会从头开始重写它)。只需将文件读入一组变量,一次一行。清除所需的任何变量,并将它们写入新文件。

标签: c# csv xslt data-manipulation


【解决方案1】:

您可以在没有任何库的情况下使用 C# 来分隔和连接 csv 字符串。它比使用 XLST 更容易。作为样本:

 String csv = "1,John Doe,JohnDoe@mail.com,123456789,1988-08-08";
 String[] csvList = csv.Split(',');
 csvList[2] = "";
 csvList[3] = "";
 csv = String.Join(",", csvList);

【讨论】:

  • 这正是我想要的。谢谢!
【解决方案2】:

最佳方式很大程度上取决于个人喜好。对我来说,最好的方法是使用 sed。假设您的数据在data.csv 文件中:

cat data.csv | sed '2,$ s/\([^,]*\),\(.[^,]*\),\(.[^,]*\),\([^,]*\),\([^,]*\)/\1,\2,,,\5/' > output.csv

【讨论】:

    猜你喜欢
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2019-04-08
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 2012-07-13
    相关资源
    最近更新 更多