WeeklyAlteryxTips#66 見えない文字の謎を解く

Alteryx

インターネットで入手した情報はしばしばトラブルの種となりことがあります。特に目に見える場合は問題ないのですが、見えない文字がいることがあります。

たとえば「ブログ­」というのは一見なんの変哲もない言葉ですが、実は空白文字が含まれています。空白文字を見ることができるサイトがあるので、見てみましょう。

Unicodeの「U+00AD」は、SOFT HYPHENという文字です。これをAlteryxで可視化してみましょう。

Alteryxで見えない文字を調べる

文字列の中に含まれた見えない文字を検知するためには、正規表現ツールで以下のような設定を行うことで、文字列を一文字ずつに分解することができます。

ポイントは、正規表現を「.」(ドット)、出力方法はトークン化、行に分割します。これにより、以下のようなデータが、

以下のように一文字ずつに分解できます。

確かに4行目に空白があることがわかります。

この文字列のUnicodeのコードポイントを計算してみましょう。基本的にはCharToIntで文字列をASCIIに変換し、16進にすれば取得できます。一般的に頭に「U+」とついて数値部分の文字長が4で左側は0詰めという感じにすると、以下のような計算式になります。

"U+"+PadLeft(IntToHex(CharToInt([Field1])),4,"0")

実際には以下のようになります。

ということで、見えない文字の正体はUnicodeの「U+00AD」となりますが、これはUnicode文字を調べると「SOFT HYPHEN」に該当します。

ちなみに、以下のサイトだと貼り付けてしまえばすぐに何者か判明します。

Alteryxで見えない文字を除去する

さて、見えない文字は通常不要で使用しないので削除してしまえばよいかと思います。例えば、必要な文字が数値とアルファベットのみ、ということになれば正規表現でそれに該当しないものは捨てる、ということも可能です。

例えば日本語で句読点など以外の文字列を残すといった場合の正規表現ツールの設定は以下のとおりです。基本的には英数字日本語以外は空白に置換、という形になっています。

[^a-zA-Z0-9ぁ-んァ-ヶア-ン゙゚一-龠]

この正規表現のポイントは、最初のブランケットの直後に「^」をつけることで、ブランケット内の文字列以外、という表現になります。

英数字以外、ということであれば上の代わりに

[^a-zA-Z0-9]

とすればオッケーです。いずれも句読点等は削除されてしまうので気をつけて下さい。

見えない文字のみを削除したい、ということであれば、検索置換ツールで置換してしまうのが一番手っ取り早いかと思います(とはいえ、見えない文字の数が多いので面倒ですが・・・)。

まとめ

  • AlteryxでUnicodeの見えない文字列の混入があるかどうか、あった場合に削除する方法をご紹介しました。
  • 本記事は、ちょっと寝かしていたのですが、Weekly Challengeの方でチャレンジとして公開されたので、「ついで」といってはなんですが、公開することにしました。ぜひチャレンジしてみてください「Challenge #443: Mystery of the Unjoined Records」。

サンプルワークフローダウンロード

次回

未定です。

コメント

タイトルとURLをコピーしました