Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

Pythonで特定文字以降の文字を削除する(正規表現を使わない)

Pythonで特定文字以降の文字を削除する(正規表現を使わない)

イテレータで作ったVerがありますので、よかったら以下もどうぞ

kuzunoha-ne.hateblo.jp

こんばんは、葛の葉です。

さて、APIなどで、文字列を取得することがあると思うのですが、余分な部分は無くして綺麗な形で変数や配列に入れたいと思うことが多々あると思います。

たとえば町田(東京)(東京)部分

たとえばシェフの気まぐれサラダ(工場生産)(工場生産)の部分

たとえばからあげ:20180810:20180810の部分

正規表現で削除することも出来るのですが、私はこんなやりかたをしてみました。

moji = 'シェフの気まぐれサラダ(工場生産)'

moji = moji.split('(')[0]

print(moji)

>>>シェフの気まぐれサラダ

>>>シェフの気まぐれサラダ 出来ました!!!

要するにsplit('(')を使ってを境に文字を区切って配列にしています。

moji.split('(')['シェフの気まぐれサラダ', '工場生産)']という配列になりますね。

その[0]番目の要素を取り出すのでシェフの気まぐれサラダの部分だけ取り出すことが出来るわけですねぇ。

ただ、配列に分解して取り出しているだけなので、複雑な文等には適していないと思います。


切りたい文字が入っている要素、入っていない要素の入子になっている配列での取り出し方

また、例えば配列の中に括弧()が入っている、入っていないものが入子になっている配列もあるかと思います。

dinners = ['チキングリル', 'シェフの気まぐれサラダ(工場生産)', 'ドラゴンのしっぽビール(発泡酒)', 'スコーン']

こんな場合は以下のようにしてみましょうか

dinners = ['チキングリル', 'シェフの気まぐれサラダ(工場生産)', 'ドラゴンのしっぽビール(発泡酒)', 'スコーン']
cut_dinners = []  # 入れ替える別配列を用意しておく

for dinner in dinners:
    if '(' in dinner:
        cut_dinners.append(dinner.split('(')[0])
    else:
        cut_dinners.append(dinner)

print(cut_dinners)
>>> ['チキングリル', 'シェフの気まぐれサラダ', 'ドラゴンのしっぽビール', 'スコーン']

if '(' in dinner:という方法をとると良いですね。 文字列内にがあるか…?を判定し、

Trueならcut_dinners.append(dinner.split('(')[0])

Flaseならcut_dinners.append(dinner)

とします。


API等を使うと色んな値が入った文字列と出会うようになったなぁと思ってます。

その文字列を加工していくことも、すごく重要ですよね。

API使って開発されている皆様のお役に立てれば幸いです。