構造化テキストをcsv変換
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| 構造化テキストをcsv変換 [2023/07/29 02:26] – 改行の追加 Minoru Kijima | 構造化テキストをcsv変換 [2023/07/29 04:43] (現在) – [PowerShellスクリプト] Minoru Kijima | ||
|---|---|---|---|
| 行 4: | 行 4: | ||
| ===== 入力テキスト ===== | ===== 入力テキスト ===== | ||
| - | <file .txt set.txt> | + | <file .txt st.txt> |
| Name: Convert-StructuredTextToCsv.ps1 | Name: Convert-StructuredTextToCsv.ps1 | ||
| Length: 1749 | Length: 1749 | ||
| 行 92: | 行 92: | ||
| } | Export-Csv -Path $ExportCSV -Encoding Default -NoTypeInformation | } | Export-Csv -Path $ExportCSV -Encoding Default -NoTypeInformation | ||
| Get-Item -Path $ExportCSV | Get-Item -Path $ExportCSV | ||
| + | </ | ||
| + | |||
| + | ===== Perlスクリプト ===== | ||
| + | <file .pl str2csv.pl> | ||
| + | # | ||
| + | # StructuredText形式からCSV形式に変換 | ||
| + | # | ||
| + | $line = 0; | ||
| + | while(<> | ||
| + | chomp; | ||
| + | chomp; | ||
| + | s/\s+$//; | ||
| + | # StructurTextの要素分解 | ||
| + | ($key, $val) = (split(/: | ||
| + | if ($key =~ m/ | ||
| + | # | ||
| + | if ($val =~ m/,/) { | ||
| + | $val = sprintf(" | ||
| + | } | ||
| + | # 出現位置への格納 | ||
| + | if (defined($key2Num{$key})) { | ||
| + | $csvList[$key2Num{$key}] = $val; | ||
| + | } | ||
| + | # 項目名出現順の記録 | ||
| + | else { | ||
| + | push(@keyList, | ||
| + | push(@csvList, | ||
| + | $key2Num{$key} = scalar(@keyList) - 1; | ||
| + | } | ||
| + | } | ||
| + | # 空行位置でのCSV出力 | ||
| + | elsif ($key eq '' | ||
| + | if ($line == 0) { | ||
| + | printf(" | ||
| + | } | ||
| + | if (scalar(@csvList)> | ||
| + | printf(" | ||
| + | @csvList = (); | ||
| + | $line++; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
構造化テキストをcsv変換.1690597591.txt.gz · 最終更新: by Minoru Kijima
