如何使用NODE js / Java脚本将此数据转换为cvs

问题描述 投票:0回答:1

我在使用NodeJS清理此数据时遇到了一些麻烦,因此可以将其插入CVS工作表中。小时数可能会更改。最后两个数字行是选项,因为每列总计有一个,如果将其删除,尽管它必须与节点一起出现。

以下数据当前保存在.txt文件中

Apprentice Name  ↑ Period End Date  ↑ Full Name Hours Tracking Name Total
Hours Task 1 Hours Task 2 Hours Task 3 Hours Task 4 Hours Task 5 Hours Task
6 Hours Task 7 Hours Task 8 Hours
CP - Apprentice 4/21/2019 - 4/27/2019 CP
Hours-000104 40 15 10 0 0 0 15 0 0
  4/28/2019 - 5/4/2019 CP Hours-000103 40 10 10 10 0 0 10 0
0
  5/5/2019 - 5/11/2019 CP Hours-000118 40 10 10 10 0 10 0 0
0
  5/12/2019 - 5/18/2019 CP Hours-000233 40 10 10 10 10 0 0 0
0
  5/19/2019 - 5/25/2019 CP Hours-000164 40 10 10 10 10 0 0 0
0
  5/26/2019 - 6/1/2019 CP Hours-000210 40 0 0 0 10 10 10 10
0
  6/2/2019 - 6/8/2019 CP Hours-000211 40 5 20 5 5 0 5 0 0
  6/9/2019 - 6/15/2019 CP Hours-000234 40 10 10 10 0 10 0 0
0
  6/16/2019 - 6/22/2019 CP Hours-000251 40 0 30 10 0 0 0 0 0
  6/23/2019 - 6/29/2019 CP Hours-000292 40 10 30 0 0 0 0 0 0
  6/30/2019 - 7/6/2019 CP Hours-000310 40 0 40 0 0 0 0 0 0
  7/7/2019 - 7/13/2019 CP Hours-000455 40 0 30 0 10 0 0 0 0
  7/14/2019 - 7/20/2019 CP Hours-000745 40 0 10 10 10 10 0 0
0
  7/21/2019 - 7/27/2019 CP Hours-000709 40 0 0 10 20 10 0 0
0
  7/28/2019 - 8/3/2019 CP Hours-000708 40 0 20 0 0 0 10 10 0
  8/4/2019 - 8/10/2019 CP Hours-000851 40 0 0 0 40 0 0 0 0
  8/11/2019 - 8/17/2019 CP Hours-000886 40 0 0 0 40 0 0 0 0
  8/18/2019 - 8/24/2019 CP Hours-001133 40 0 0 0 40 0 0 0 0
  8/25/2019 - 8/31/2019 CP Hours-001311 40 0 0 0 40 0 0 0 0
  9/1/2019 - 9/7/2019 CP Hours-001381 40 0 20 20 0 0 0 0 0
  9/8/2019 - 9/14/2019 CP Hours-001537 40 10 10 20 0 0 0 0 0
  9/15/2019 - 9/21/2019 CP Hours-001604 40 0 40 0 0 0 0 0 0
  9/22/2019 - 9/28/2019 CP Hours-001795 40 0 5 35 0 0 0 0 0
  9/29/2019 - 10/5/2019 CP Hours-001956 40 0 0 20 5 5 5 5 0
  10/6/2019 - 10/12/2019 CP Hours-002020 40 0   35 0 5 0 0 0
  10/13/2019 - 10/19/2019 CP Hours-002182 40 0 20 10 10 0 0
0 0
1040 90 335 225 250 60 55 25 0
1040


-- 
Person Name
Human Job
Cell: 867-5309
Email:  [email protected]
LinkedIn:  https://www.linkedin.com/in/CarbonLife/
javascript node.js d3.js cvs data-cleaning
1个回答
0
投票
const tokens = input.split(/\s+/g);

const output = [["Period End", "Date", "Full Name,Hours", "Tracking Name", "TotalHours", "Task 1 Hours", "Task 2 Hours", "Task 3 Hours", "Task 4 Hours", "Task 5 Hours", "Task 6 Hours", "Task 7 Hours", "Task 8 Hours"]];

for (let origin = 0, index = 0; index < tokens.length; index++) {
    // Find date range
    if (tokens.slice(index, index + 3).join(" ").match(/\d{1,2}\/\d{1,2}\/\d{4} - \d{1,2}\/\d{1,2}\/\d{4}/g)) {
        if (origin !== 0) {
            output.push([tokens.slice(origin, origin + 3).join(" "), ...tokens.slice(origin + 3, index)]);
        }

        origin = index;

        index += 2;
    }
}

for (const row of output) {
    // I get to be lazy, YOU have to use library.
    console.log(row.join(","));
}
© www.soinside.com 2019 - 2024. All rights reserved.