【问题标题】:Parse CSV File section wise明智地解析 CSV 文件部分
【发布时间】:2023-01-16 18:47:29
【问题描述】:

我是 C# 的新手,需要帮助为下面的 cvs 数据文件编写解析器

[INFO]
LINE_NAME,MACHINE_SN,MACHINE_NAME,OPERATOR_ID
LineName,ParmiMachineSN,PARMI_AOI_1,engineer
[INFO_END]

[PANEL_INSP_RESULT]
MODEL_NAME,MODEL_CODE,PANEL_SIDE,INDEX,BARCODE,DATE,START_TIME,END_TIME,DEFECT_NAME,DEFECT_CODE,RESULT
E11-03356-0388-A-TOP CNG,,BOTTOM,47,MLT0388A03358CSNSOF1232210200052-0001,20201023,12:46:57,12:47:04,,,OK
[PANEL_INSP_RESULT_END]

[BOARD_INSP_RESULT]
BOARD_NO,BARCODE,DEFECT_NAME,DEFECT_CODE,BADMARK,RESULT
1,MLT0388A03358CSNSOF1232210200052-0001,,,NO,OK
2,MLT0388A03358CSNSOF1232210200052-0004,,,NO,OK
3,MLT0388A03358CSNSOF1232210200052-0003,,,NO,OK
4,MLT0388A03358CSNSOF1232210200052-0002,,,NO,OK
[BOARD_INSP_RESULT_END]

[COMPONENT_INSP_RESULT]
BOARD_NO,LOCATION_NAME,PIN_NUMBER,POS_X,POS_Y,DEFECT_NAME,DEFECT_CODE,RESULT
[COMPONENT_INSP_RESULT_END]

我需要解析上面的文件

【问题讨论】:

  • 你能分享你的文件吗,很简单
  • 需要明确的是,这是不是CSV 文件。它是一个包含 CSV 数据但散布着其他数据的文件。

标签: c#


【解决方案1】:

要在 C# 中解析上述 CSV 文件,可以使用以下步骤:

  1. 使用 File.ReadAllText 方法将整个文件读入字符串。

    string fileText = File.ReadAllText("file.csv");

  2. 通过查找“[INFO]”和“将文件拆分为单独的部分

    [INFO_END]" 标签,然后使用循环处理每个部分。 string[] sections = fileText.Split(new string[] { “[INFO]”, “[INFO_END]”, “[PANEL_INSP_RESULT]”, “[PANEL_INSP_RESULT_END]”, “[BOARD_INSP_RESULT]”, “[BOARD_INSP_RESULT_END]”, "[COMPONENT_INSP_RESULT]", "[COMPONENT_INSP_RESULT_END]" }, StringSplitOptions.RemoveEmptyEntries); foreach(部分中的字符串部分) { //处理每个部分 } 在循环中,使用 String.Split 方法通过查找换行符将每个部分拆分为行。

    字符串 [] 行 = section.Split(' ');

  3. 再次使用 String.Split 方法通过查找逗号将每一行拆分为单元格。

    foreach(行中的字符串行) { string[] cells = row.Split(','); //处理每个单元格 }

  4. 现在你可以根据需要处理每个单元格,你可以检查第一个单元格的值来决定这一行属于哪个部分,然后你可以根据它们的类型和行中的位置来处理单元格。

  5. 您可以使用 switch case 语句来检查您当前正在处理的部分,然后使用适当的逻辑来解析数据。

    请注意,这是一个简化的示例,您可能需要添加额外的错误处理和验证以确保正确解析数据。

    这是一个如何解析 csv 文件的示例,但您可能需要根据您的特定用例处理各种边缘情况,如空行、空单元格等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多