2017-02-07 5 views
0

私はstr.split()メソッドを使用していますが、結果の違いの原因を突き止めることができますが、その理由を理解できません。この文字列の分割方法の違いは何ですか?

>>> dummy_line = "Line1 \nLine2 \nLine3" 
>>> print(dummy_line.split()) 
['Line1', 'Line2', 'Line3'] 

>>> print(str.split(" ")) 
['Line1', '\nLine2', '\nLine3'] 

なぜ改行エスケープ文字\n含め返さラインにつながる番目のインスタンスで" "として分割区切り文字を定義していますか?

+6

を試してみてください '引数なしの.split'は、*空白*を上分割します。 –

+0

@ juanpa.arrivillaga:答えはコメントよりもはるかに読みやすい。 – DSM

答えて

3

str.split(" ")は、単一のスペースで区切ります。したがって改行は保持されます。

str.split()すべての空白を壊します。 (\s\r\n\t

たぶん、あなたの誤解デフォルトの関数の引数のためのPythonのサポートはありますか?

ヒント:あなたの第二の例では、あなたは* *単一のスペースにのみ分割されているのに対し、dummy_line = "Line 1\nLine 2"

+0

より具体的には、 'str.split( '')'は1つのスペースのみで区切りますが、 'str.split()'は1つ以上のスペースで区切ります。 –

+2

私は改行文字やキャリッジリターンを "1つ以上の空白"と呼びません –

+0

(1つ以上の空白または改行文字ですが、私はその答えの一部が不正確です)。これは真実ではありません: "str.split(" ")はスペースでのみ区切ります。 * space *ではなく* one * spaceのみで区切ります。 –

0
  • スプリット() - あなたのためのすべての空白文字を削除 - あなたのためのストリップ正確に一つの空白 - オフコース「\ n」の
  • スプリット(」「)を含みます。
関連する問題