44

ログファイルからフォーマットされた文字列があります。これは次のようになります。

>>> a="test                            result"

つまり、テストと結果はいくつかのスペースで分割されます。おそらくtest、一定の間隔を与えるフォーマットされた文字列を使用して作成されたものです。

単純な分割ではうまくいきません。

>>> a.split(" ")
['test', '', '', '', ... '', '', '', '', '', '', '', '', '', '', '', 'result']

split(DELIMITER, COUNT)いくつかの不要な値をクリアしました:

>>> a.split(" ",1)
['test', '                           result']

これは役に立ちました-しかし、もちろん、私は本当に必要です:

['test', 'result']

+をsplit()続けて使用することもできますが、もっとPythonicな方法があるのではないかと思いました。mapstrip()

ありがとう、

アダム

更新:そのような単純な解決策!皆さん、ありがとうございました。

4

6 に答える 6

80

区切り記号を付けないでください。

>>> a="test                            result"
>>> a.split()
['test', 'result']
于 2010-03-22T13:16:16.677 に答える
46
>>> import re
>>> a="test                            result"
>>> re.split(" +",a)
['test', 'result']

>>> a.split()
['test', 'result']
于 2010-03-22T13:15:01.833 に答える
20

これだけでうまくいくはずです:

a.split()

例:

>>> 'a      b'.split(' ')
['a', '', '', '', '', '', 'b']
>>> 'a      b'.split()
['a', 'b']

ドキュメントから:

sepが指定されていないか、Noneの場合、異なる分割アルゴリズムが適用されます。連続する空白の実行は単一の区切り文字と見なされ、文字列に先頭または末尾の空白がある場合、結果には開始または終了に空の文字列が含まれません。したがって、空の文字列または空白だけで構成される文字列をNone区切り文字で分割すると、[]が返されます。

于 2010-03-22T13:14:56.293 に答える
3

単純な問題はありa.split()ますか?

于 2010-03-22T13:15:23.920 に答える