なぜstr.split()はNothing項目を削除するのですか?なぜstr.split()はNothing項目を削除するのですか?
>>> s = 'this is an irritating string with random spacing .'
>>> s.strip().split(' ')
['this', 'is', '', '', 'an', '', '', 'irritating', 'string', 'with', '', 'random', 'spacing', '', '.']
>>> s.strip().split()
['this', 'is', 'an', 'irritating', 'string', 'with', 'random', 'spacing', '.']
docsによれば:9月が与えられた場合
str.split(SEP =なし、maxsplit個= -1)
、連続する区切り文字を一緒にグループ化されていないと空の文字列を区切るとみなされます(たとえば、 '1、、2'.split('、 ')は[' 1 '、' '、' 2 ']を返します)。 sep引数は複数の文字で構成されています(たとえば、 '1 <> 2 <> 3'.split(' <> ')は[' 1 '、' 2 '、' 3 ']を返します)。空の文字列を指定した区切り文字で分割すると、['']が返されます。
sepが指定されていない場合、またはNoneの場合、別の分割アルゴリズムが適用されます。連続する空白の実行は単一の区切り文字とみなされ、先頭または末尾に空の文字列は含まれません末尾の空白。したがって、空の文字列または空白文字のみの文字列をNoneのセパレータで分割すると、[]が返されます。
のでがNoney項目を削除するには、次の神託の方法で、キーワード引数sep=
を使用するには?
[w for w in s.strip().split(' ') if w]
それだけ空白(\s\t\n
)なら、str.split()
は十分ではなく、我々は理解が必要な場合は、条件のリストでは、別の文字/ストリングに分割しようとしていると言うことができますされます。そうですか?
空白文字はありません。私はNoneyが何を意味するのかも知らないが、この方法は文書化されているように機能する。あなたは文字列にNone要素がありません –
'split()'を使わないのはなぜですか?さらに、実際に何をしようとしていますか? –
サイドノート:引数なしの 'split'を使用している場合、' strip'を最初に呼び出すことは冗長です。 'split'は余分なメソッド呼び出しと一時的な' str'を追加することなく、先頭と末尾の空白をすでに削除します。 – ShadowRanger