メモ帳

python, juliaで機械学習をやっていく

pythonで不必要な空白文字を消去してtokenize

区切り文字でstringを分割してリストにするとき、余計な空白文字が含まれる場合があって邪魔なので、除去する方法を書く。

結論

カンマ区切りでstringを分割する場合

tokens = [f.strip() for f in strings.split(",")]

以下のように区切り文字の後ろに数の異なる空白文字などが入っている文字列をカンマ区切りでsplit methodを使ってリストに分割すると、先頭に数の不均等な空白文字が入ってしまい、処理が面倒。

strings = "aaa, bbb,  ccc, ddd "
tokens = [f for f in strings.split(",")]
# >> ["aaa", " bbb", "  ccc", " ddd "]

だが、stringの先頭と末尾にある空白文字(全角半角問わず)を全て削除してくれるstrip()というメソッドがある。また、引数に文字列を渡すと、その中に含まれる文字列を先頭と末尾から順に削除する。

"      cccc     ".strip()
# >> 'ccc'

"--//ccc//--".strip("-/")
# >> 'ccc'

なので、これらを組み合わせると、余計な空白文字を除去してきれいにできる。

strings = "aaa, bbb,  ccc, ddd "
tokens = [f.strip() for f in strings.split(",")]
# >> ["aaa", "bbb", "ccc", "ddd "]

その他の利用法

空白文字の数をそろえるためだけに使う

strings = "aaa, bbb,  ccc, ddd "
tokens = [f.strip() for f in strings.split(",")]
cleaned_strings = ", ".join(tokens)
# >> "aaa, bbb, ccc, ddd"