構造化テキストを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