11

文字列からすべてのスペースを削除したい。

"as fa sdf sdfsdf"

結果は次のようになります。

「asfasdfsdfsdf」

これを達成するために私が考えることができるいくつかの方法があります、そして私はどれが最高であるか疑問に思います。

1.1。

"".join(" as fa   sdf sdfsdf ".split())

2.2。

" as fa   sdf sdfsdf ".replace(" ", "")

そして、もっとあると思います。
どちらが好ましいですか?

4

8 に答える 8

6

モジュール" as fa sdf sdfsdf ".replace(" ", "")を使用できる証拠として、最良かつ最も効率的な方法は2番目のバージョンであると思います。timeit

  • python -m timeit '"".join(" as fa sdf sdfsdf ".split())'

    1000000 loops, best of 3: 0.554 usec per loop

  • python -m timeit '" as fa sdf sdfsdf ".replace(" ", "")'

    1000000 loops, best of 3: 0.405 usec per loop

于 2012-12-02T00:23:36.933 に答える
4

replace(" ", "")最も明確で最も簡潔です。

于 2012-12-02T00:22:33.087 に答える
4

これを使用して、すべての空白を一度に削除します。

import re

s = ' as fa   sdf sdfsdf '
s = re.sub(r'\s+', '', s)

s
=> 'asfasdfsdfsdf'

このアプローチの利点は、正規表現がr'\s+'スペースやタブなどを含む「1つ以上の」空白文字と一致するため、文字間のスペース(1、2、いくつであっても)がすべて削除されることです。

于 2012-12-02T00:24:10.593 に答える
2

を使用してreplaceも、すべての空白文字(改行、タブなど)が削除されるわけではありません。

>>> 'abc\t\ndef'.replace(" ", "")
'abc\t\ndef'

私は好きstring.translateです:

>>> import string
>>> 'abc\t\ndef'.translate(None, string.whitespace)
'abcdef'

編集:string.translateUnicode文字列では機能しません。代わりに使用することをお勧めしますre.sub('\s', '', 'abc\n\tdef')

于 2012-12-02T00:23:04.657 に答える
2

正規表現

>>> str = "   as fa sdf sdfsdf  "
>>> import re
>>> re.sub(r'\s', '', str)
于 2012-12-02T00:26:45.077 に答える
1

re.sub(" ","", s)は私のお気に入り。

于 2012-12-02T00:23:48.727 に答える
1

ミックスに別のものを投げるだけです:

from string import whitespace
ws = set(whitespace)
''.join(ch for ch in my_string if ch not in ws)
于 2012-12-02T01:27:01.083 に答える
0

正規表現はシンプルで機能します。split()少し複雑です。正規表現が優先されsplit()ます。

于 2012-12-02T00:19:28.510 に答える