Python <0xa0> <0xad> <0x2003> <0x200b> <0x202a> <0xfeff> のような特殊文字を削除する方法

この記事は約2分で読めます。

Python <0xa0> <0xad> <0x2003> <0x200b> <0x202a> <0xfeff> のような特殊文字を削除する方法

じゅげむ​じゅげむ​ごこうの​すりきれ​かいじゃりすいぎょの​すいぎょうまつ​うんらいまつ​ふうらいまつ​くうねるところに​すむところ​やぶらこうじに​ぶらこうじ​ぱいぽぱいぽぱいぽの​しゅーりんがん​しゅーりんがんの​ぐーりんだい​ぐーりんだいの​ぽんぽこなの​ぽんぽこぴーの​ちょうきゅうめいの​ちょうすけ

上記の文字をコピペしてテキストエディタに貼り付けると

じゅげむ

じゅげむ

上記のような感じで<0x200b>のような特殊文字がテキストの中に混入している

これをpythonのプログラムで消すにはどうすればいいかという解説です

<0x200b>を消すにはreplaceで\u200bを空文字に置換

text = "じゅげむ​じゅげむ"
text = text.replace("\u200b", "")

上記のtext = “じゅげむ​じゅげむ”のじゅげむとじゅげむの間には目に見えない特殊な文字(<0x200b>)が含まれています

この<0x200b>を消したい場合
replaceで削除するとき第1引数には\u200bと書く必要があります

0xとは?

0x16進数の接頭語です

0x200bというのは16進数200bという数値のことで
10進数でいうところの8203です

\uとは?

\uUnicodeエスケープシーケンスです

Unicodeというのは世界中の文字に番号を割り振った一覧表みたいなものです

  • \u0041A
  • \u0042B
  • \u3041
  • \u3042

ユニコードの41番はアルファベット大文字のAで、42番はBで、3041番は小さいぁで、3042番は大きいあで…というのが\uffff(10進数でいうところの65,535番)まで決められています

<0xa0>を消すにはreplaceでu”\xa0″を空文字に置換

text = text.replace(u"\xa0", "")
<0x200b>は「ゼロ幅スペース」
<0x200b>は「ゼロ幅スペース」 ネットで調べ物をしていてテキストをコピペするとたまに目には見えない特殊な文字が混ざっていたりする たとえば、「This​is​a​pen.」という文字をSublime Textなどのテキストエディタに貼...

コメント

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