ホーム>source

NodeJSを使用してこのデータをクリーンアップする際に問題が発生したため、CSVシートにプラグインできます。時間数は変更される場合があります。最後の2つの番号行はオプションです。これは、ノードを使用する必要があるはずですが、削除した場合、各列の合計があるためです。

以下のデータは現在.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: name@bop.org LinkedIn: https://www.linkedin.com/in/CarbonLife/
あなたの答え
  • 解決した方法 # 1

    ウィズウィズ
    

    編集: これは実際にはデータの最後の行をキャプチャしているわけではないことに気づきましたが、行の固定トークン幅に依存したくなかったので、読者がいつ必要かを判断する練習として残しておきます終了する最後の行。

    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 a library. console.log(row.join(",")); }

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ java - エラーが発生し、それを修正する方法がわからない