かなり古くからあるシステムのデータファイルを特徴量候補としてデータ結合する必要が出たのですが
データファイルが独特でうまく読み込むことができません。
データファイルは
・Shift-JIS
・ヘッダーなし、カンマなし、TABなし、改行なしの行列非分割1レコードデータ
・全角文字、半角カナを含む項目あり。指定バイト数に満たない項目は半角ブランクで埋められている
・データ定義はあり、バイト数指定で行列分割を定義。列、行は全て固定長
やりたいことは全角文字、半角カナを含む項目ありの行列非分割1レコードデータをデータ定義に沿って分割したいです。
例. 識別子(3バイト)、県名(8バイト)、県庁所在地(8バイト)
060北海道 サッポロ 231神奈川県ヨコハマ [EOF]
↓
"060","北海道 ","サッポロ "
"231","神奈川県","ヨコハマ "
全角文字、半角カナがなければデータ入力の単層ファイルレイアウトで固定長分割できるのですが
UTF-8で読み込まれるため全角文字、半角カナがあると文字化けとバイトずれが起こりうまく読み込みも分割もできません。
やりたいことをalteryxで達成する方法はありますでしょうか?
解決済! 解決策の投稿を見る。
以下のような感じでとりあえず読み込みはできました。
考え方としては、文字コードを1バイトとして読み込み後で変換かけてやることでしょうか。
ポイントは、
1.データ入力ツールはテキストを読み込むような設定で実施(区切り「\0」フィールド長は長めに取る)
2.読み込み時の文字コードは、「ISO 8859-1ラテン語I」
3.行分割は正規表現ツールのトークン化「.{19}」。
4.列分割も正規表現ツールの解析で「(.{3})(.{8})(.{8})」。
5.文字コードをConvertFromCodePage関数でShift-JISに。
です。
めんどくさいのが、いろいろなファイルがあると、行分割のときのバイト数合計を変えたり、列分割の際の正規表現のバイト数など色々といじらないといけないことかと思います。
しかし、なかなか嫌がらせみたいなフォーマットですね・・・昔のファイル容量削減するための工夫でしょうか・・・。
ありがとうございます!
これはすごい・・・正規表現2回に分ける発想は出ませんでした。
別のディスカッションでも文字コード問題を質問してますが
データの入力に困ったらまずはISOのラテン語で読み込みところから始めるんですね。
これ覚えておきます。
改めてありがとうございました!