質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

2回答

16600閲覧

Python 文字列中の連続する半角スペースを1つの半角スペースに置換したい

Hotaka1001

総合スコア7

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

1クリップ

投稿2017/05/01 01:09

###前提・実現したいこと
文字列中の2つ以上連続した半角スペースを、一個だけに置換したいです。

###該当のソースコード

python

1import re 2output[i] = output[i].replace('\s+','\s')

など試していますが、うまくいきません。
###補足情報(言語/FW/ツール等のバージョンなど)
python2.7です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

正規表現はreモジュールを使います。

Python

1import re 2s = u"a あ b いうえ " 3s = re.sub(r"\s+", " ", s) 4print("[" + s + "]") #[a あ b いうえ ]

投稿2017/05/01 01:33

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hotaka1001

2017/05/01 01:39

ありがとうございます、これでできました!
Hotaka1001

2017/05/01 01:44

追記 \sは改行コードにもマッチするのですね。 改行コードを残したかったので、 s = re.sub(r" +", " ", s) として解決できました。 ありがとうございました。
can110

2017/05/01 01:50

そうですね。\sは改行やタブ文字などにもマッチするので、半角スペースのみ指定するのがよいでしょう。
guest

0

#これは誤回答です

Python

1output[i] = output[i].replace('\s+',' ')

こうではないでしょうか。

投稿2017/05/01 01:22

編集2017/05/01 01:39
masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hotaka1001

2017/05/01 01:31 編集

ありがとうございます。 試してみましたが、変換できていないようです。 replace(' ',' ') '''3つを1つに''' replace(' ',' ') '''2つを1つに''' と、繰り返せば一応できるんですが、もう少しスマートな方法がないのかなと。
masaya_ohashi

2017/05/01 01:37

すみません、Python fiddleのページで動作確認していけるやろと思ってたら、空白をいくら並べてもHTML上の表示になってしまって空白が1個に統合されていることと区別がついていませんでした…私の回答は誤りです。
Hotaka1001

2017/05/01 01:41

とんでもないです。早い回答をありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問