我在使用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/
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(","));
}